btrfs-progs: corrupt-block: improved error handling in corrupt_item_nocow
authorDavid Sterba <dsterba@suse.com>
Wed, 7 Sep 2016 14:09:11 +0000 (16:09 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 3 Oct 2016 09:33:15 +0000 (11:33 +0200)
Signed-off-by: David Sterba <dsterba@suse.com>
btrfs-corrupt-block.c

index 789cbc7..5e4ae72 100644 (file)
@@ -899,7 +899,11 @@ static int corrupt_item_nocow(struct btrfs_trans_handle *trans,
        if (slot == 0)
                del = 0;
        /* Only accept valid eb */
-       BUG_ON(!leaf->data || slot >= btrfs_header_nritems(leaf));
+       if (!leaf->data || slot >= btrfs_header_nritems(leaf)) {
+               error("invalid eb: no data or slot out of range: %d >= %d",
+                               slot, btrfs_header_nritems(leaf));
+               return -EINVAL;
+       }
        btrfs_item_key_to_cpu(leaf, &key, slot);
        if (del) {
                fprintf(stdout, "Deleting key and data [%llu, %u, %llu].\n",