btrfs-progs: inspect: improved error handling
authorDavid Sterba <dsterba@suse.com>
Wed, 7 Sep 2016 12:36:14 +0000 (14:36 +0200)
committerDavid Sterba <dsterba@suse.com>
Wed, 21 Sep 2016 12:12:38 +0000 (14:12 +0200)
Two remaining BUG_ON, be more specific what's wrong.

Signed-off-by: David Sterba <dsterba@suse.com>
cmds-inspect.c

index 4b7cea0..d493544 100644 (file)
@@ -207,7 +207,10 @@ static int cmd_inspect_logical_resolve(int argc, char **argv)
        ret = snprintf(full_path, bytes_left, "%s/", argv[optind+1]);
        path_ptr = full_path + ret;
        bytes_left -= ret + 1;
-       BUG_ON(bytes_left < 0);
+       if (bytes_left < 0) {
+               error("path buffer too small: %d bytes", bytes_left);
+               goto out;
+       }
 
        for (i = 0; i < inodes->elem_cnt; i += 3) {
                u64 inum = inodes->val[i];
@@ -230,8 +233,12 @@ static int cmd_inspect_logical_resolve(int argc, char **argv)
                                path_ptr[-1] = '/';
                                ret = snprintf(path_ptr, bytes_left, "%s",
                                                name);
-                               BUG_ON(ret >= bytes_left);
                                free(name);
+                               if (ret >= bytes_left) {
+                                       error("path buffer too small: %d bytes",
+                                                       bytes_left - ret);
+                                       goto out;
+                               }
                                path_fd = btrfs_open_dir(full_path, &dirs, 1);
                                if (path_fd < 0) {
                                        ret = -ENOENT;