]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
libblkid: Make sure we never reference a null dev->bid_type
authorTheodore Ts'o <tytso@mit.edu>
Sun, 13 Jul 2008 23:10:10 +0000 (19:10 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 13 Jul 2008 23:10:10 +0000 (19:10 -0400)
There were a few places where we don't check to make sure
dev->bid_type is non-NULL before dereferencing the pointer, mostly in
debug code.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
lib/blkid/dev.c
lib/blkid/devname.c
lib/blkid/save.c

index 770632b6e9a30f47857953ee823f9c23217e936a..5252a8eb21f682bd18b651116f8287ddb0b04803 100644 (file)
@@ -34,7 +34,8 @@ void blkid_free_dev(blkid_dev dev)
                return;
 
        DBG(DEBUG_DEV,
-           printf("  freeing dev %s (%s)\n", dev->bid_name, dev->bid_type));
+           printf("  freeing dev %s (%s)\n", dev->bid_name, dev->bid_type ?
+                  dev->bid_type : "(null)"));
        DBG(DEBUG_DEV, blkid_debug_dump_dev(dev));
 
        list_del(&dev->bid_devs);
index df96859903e2058d3645ad48299b697f6cd4bcb8..65c6ccae8afcaef90f211e8e32b4830d5122279a 100644 (file)
@@ -96,7 +96,8 @@ blkid_dev blkid_get_dev(blkid_cache cache, const char *devname, int flags)
                        dev2 = list_entry(p, struct blkid_struct_dev, bid_devs);
                        if (dev2->bid_flags & BLKID_BID_FL_VERIFIED)
                                continue;
-                       if (strcmp(dev->bid_type, dev2->bid_type))
+                       if (!dev->bid_type || !dev2->bid_type ||
+                           strcmp(dev->bid_type, dev2->bid_type))
                                continue;
                        if (dev->bid_label && dev2->bid_label &&
                            strcmp(dev->bid_label, dev2->bid_label))
index 76f2f9e5a3660d5c7924e9689ce55f96d1d21ed6..60aa6ce7bdd692b5ba3904573d24fb4cc5b25146 100644 (file)
@@ -34,7 +34,8 @@ static int save_dev(blkid_dev dev, FILE *file)
                return 0;
 
        DBG(DEBUG_SAVE,
-           printf("device %s, type %s\n", dev->bid_name, dev->bid_type));
+           printf("device %s, type %s\n", dev->bid_name, dev->bid_type ?
+                  dev->bid_type : "(null)"));
 
        fprintf(file,
                "<device DEVNO=\"0x%04lx\" TIME=\"%ld\"",