Fix btrfsck args checking
authorKyle McMartin <kyle@mcmartin.ca>
Tue, 22 Jan 2008 16:32:09 +0000 (11:32 -0500)
committerDavid Woodhouse <dwmw2@hera.kernel.org>
Tue, 22 Jan 2008 16:32:09 +0000 (11:32 -0500)
btrfsck fails to check if it actually received a dev argument though, so if you
don't pass a device, we get a nice segfault.

btrfsck.c

index 4bfa55c..a3f803e 100644 (file)
--- a/btrfsck.c
+++ b/btrfsck.c
@@ -709,6 +709,11 @@ int check_extent_refs(struct btrfs_root *root,
        return err;
 }
 
+void print_usage(void) {
+       fprintf(stderr, "usage: btrfsck dev\n");
+       exit(1);
+}
+
 int main(int ac, char **av) {
        struct btrfs_root *root;
        struct cache_tree extent_cache;
@@ -727,6 +732,9 @@ int main(int ac, char **av) {
        int slot;
        struct btrfs_root_item ri;
 
+       if (ac < 2)
+               print_usage();
+
        radix_tree_init();
        cache_tree_init(&extent_cache);
        cache_tree_init(&seen);