diff options
Diffstat (limited to 'ext2fs/balloc.c')
-rw-r--r-- | ext2fs/balloc.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/ext2fs/balloc.c b/ext2fs/balloc.c index 14c18b5d..fc09c0d1 100644 --- a/ext2fs/balloc.c +++ b/ext2fs/balloc.c @@ -63,6 +63,10 @@ ext2_free_blocks (block_t block, unsigned long count) unsigned long i; struct ext2_group_desc *gdp; + /* Trap trying to free superblock, block group descriptor table, or beyond the end */ + assert_backtrace (block >= group_desc_block_end + && block < store->size >> log2_block_size); + pthread_spin_lock (&global_lock); if (block < le32toh (sblock->s_first_data_block) || @@ -402,6 +406,10 @@ got_block: pthread_spin_unlock (&global_lock); alloc_sync (0); + /* Trap trying to allocate superblock, block group descriptor table, or beyond the end */ + assert_backtrace (j >= group_desc_block_end + && j < store->size >> log2_block_size); + return j; } |