parted: Don't return "loop" for non-partitioned devices (RHBZ#634246).
authorRichard W.M. Jones <rjones@redhat.com>
Mon, 18 Oct 2010 11:56:54 +0000 (12:56 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Mon, 18 Oct 2010 11:56:54 +0000 (12:56 +0100)
If you ran part-get-parttype command on a device which didn't
contain a partition, it used to return the string "loop".  This
is an internal representation that parted uses.  We should instead
return an error because part-get-parttype makes no sense for
devices which are not partitioned.

daemon/parted.c

index 89cc0d6..068384e 100644 (file)
@@ -378,6 +378,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 +414,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 */
   }
 }