mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
inspect: Check /etc/lsb-release is not too large before calling head on it.
This commit is contained in:
@@ -400,11 +400,26 @@ parse_major_minor (guestfs_h *g, struct inspect_fs *fs)
|
||||
static int
|
||||
parse_lsb_release (guestfs_h *g, struct inspect_fs *fs)
|
||||
{
|
||||
const char *filename = "/etc/lsb-release";
|
||||
int64_t size;
|
||||
char **lines;
|
||||
size_t i;
|
||||
int r = 0;
|
||||
|
||||
lines = guestfs_head_n (g, 10, "/etc/lsb-release");
|
||||
/* Don't trust guestfs_head_n not to break with very large files.
|
||||
* Check the file size is something reasonable first.
|
||||
*/
|
||||
size = guestfs_filesize (g, filename);
|
||||
if (size == -1)
|
||||
/* guestfs_filesize failed and has already set error in handle */
|
||||
return -1;
|
||||
if (size > 1000000) {
|
||||
error (g, _("size of %s is unreasonably large (%" PRIi64 " bytes)"),
|
||||
filename, size);
|
||||
return -1;
|
||||
}
|
||||
|
||||
lines = guestfs_head_n (g, 10, filename);
|
||||
if (lines == NULL)
|
||||
return -1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user