mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 20:45:14 +00:00
Ext2FS: Fix bitmap overrun when reaching outside the first block group.
This commit is contained in:
parent
a6f9ddbb58
commit
6274208eb9
Notes:
sideshowbarker
2024-07-19 15:49:15 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/6274208eb96
1 changed files with 6 additions and 6 deletions
|
@ -929,9 +929,10 @@ bool Ext2FS::get_inode_allocation_state(InodeIndex index) const
|
|||
if (index == 0)
|
||||
return true;
|
||||
auto& bgd = group_descriptor(group_index_from_inode(index));
|
||||
unsigned index_in_group = index % inodes_per_group();
|
||||
unsigned inodes_per_bitmap_block = block_size() * 8;
|
||||
unsigned bitmap_block_index = (index - 1) / inodes_per_bitmap_block;
|
||||
unsigned bit_index = (index - 1) % inodes_per_bitmap_block;
|
||||
unsigned bitmap_block_index = (index_in_group - 1) / inodes_per_bitmap_block;
|
||||
unsigned bit_index = (index_in_group - 1) % inodes_per_bitmap_block;
|
||||
auto block = read_block(bgd.bg_inode_bitmap + bitmap_block_index);
|
||||
ASSERT(block);
|
||||
auto bitmap = Bitmap::wrap(block.pointer(), inodes_per_bitmap_block);
|
||||
|
@ -941,11 +942,10 @@ bool Ext2FS::get_inode_allocation_state(InodeIndex index) const
|
|||
bool Ext2FS::set_inode_allocation_state(unsigned index, bool newState)
|
||||
{
|
||||
auto& bgd = group_descriptor(group_index_from_inode(index));
|
||||
|
||||
// Update inode bitmap
|
||||
unsigned index_in_group = index % inodes_per_group();
|
||||
unsigned inodes_per_bitmap_block = block_size() * 8;
|
||||
unsigned bitmap_block_index = (index - 1) / inodes_per_bitmap_block;
|
||||
unsigned bit_index = (index - 1) % inodes_per_bitmap_block;
|
||||
unsigned bitmap_block_index = (index_in_group - 1) / inodes_per_bitmap_block;
|
||||
unsigned bit_index = (index_in_group - 1) % inodes_per_bitmap_block;
|
||||
auto block = read_block(bgd.bg_inode_bitmap + bitmap_block_index);
|
||||
ASSERT(block);
|
||||
auto bitmap = Bitmap::wrap(block.pointer(), inodes_per_bitmap_block);
|
||||
|
|
Loading…
Add table
Reference in a new issue