bcachefs: Check for key size > offset
authorKent Overstreet <kent.overstreet@gmail.com>
Sat, 29 Jun 2019 22:03:40 +0000 (18:03 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:23 +0000 (17:08 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/bkey_methods.c

index 09ee958c55681fe87d4ce8664278ce916f6fd6d0..27f196ef0b186963df59c6523479db6593e11eee 100644 (file)
@@ -90,6 +90,9 @@ const char *__bch2_bkey_invalid(struct bch_fs *c, struct bkey_s_c k,
        if (btree_node_type_is_extents(type)) {
                if ((k.k->size == 0) != bkey_deleted(k.k))
                        return "bad size field";
+
+               if (k.k->size > k.k->p.offset)
+                       return "size greater than offset";
        } else {
                if (k.k->size)
                        return "nonzero size field";