Btrfs-progs: fix segfault in fsck if the chunk tree is bogus
authorJosef Bacik <jbacik@fusionio.com>
Thu, 28 Mar 2013 14:27:46 +0000 (10:27 -0400)
committerDavid Sterba <dsterba@suse.cz>
Tue, 23 Apr 2013 16:56:26 +0000 (18:56 +0200)
I made open_ctree fail if the chunk tree couldn't be open, which means that fsck
now segfaults if it can't open the chunk tree.  So fix fsck to check the fs_info
we get back from open_ctree_fsinfo to make sure it's valid and exit if it's not
instead of segfaulting.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
cmds-check.c

index d39e797..4eb2ef9 100644 (file)
@@ -3860,8 +3860,10 @@ int cmd_check(int argc, char **argv)
        }
 
        info = open_ctree_fs_info(argv[optind], bytenr, rw, 1);
-       if (info == NULL)
-               return 1;
+       if (!info) {
+               fprintf(stderr, "Couldn't open file system\n");
+               return -EIO;
+       }
 
        uuid_unparse(info->super_copy->fsid, uuidbuf);
        printf("Checking filesystem on %s\nUUID: %s\n", argv[optind], uuidbuf);