X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fparted.c;h=23083a1c1278b1d2064c1b230e7f4d3705231b13;hb=45dbb6f4a605de23a3f4e93fc199f311326a5828;hp=89cc0d69c1fc718c8faad6aa853fa1e6bf9bad12;hpb=4f6bd18d2e2a9c1d317a07b59072579d8fff42ac;p=libguestfs.git diff --git a/daemon/parted.c b/daemon/parted.c index 89cc0d6..23083a1 100644 --- a/daemon/parted.c +++ b/daemon/parted.c @@ -295,13 +295,16 @@ test_parted_m_opt (void) if (r == -1) { /* Test failed, eg. missing or completely unusable parted binary. */ reply_with_error ("could not run 'parted' command"); + free (err); return -1; } if (err && strstr (err, "invalid option -- m")) - return result = 0; - - return result = 1; + result = 0; + else + result = 1; + free (err); + return result; } static char * @@ -378,6 +381,14 @@ do_part_get_parttype (const char *device) } free_strings (lines); + + /* If "loop" return an error (RHBZ#634246). */ + if (STREQ (r, "loop")) { + free (r); + reply_with_error ("not a partitioned device"); + return NULL; + } + return r; } else { @@ -406,6 +417,13 @@ do_part_get_parttype (const char *device) return NULL; } + /* If "loop" return an error (RHBZ#634246). */ + if (STREQ (p, "loop")) { + free (p); + reply_with_error ("not a partitioned device"); + return NULL; + } + return p; /* caller frees */ } }