Ticket #5706: ext2_numInodes2.patch

File ext2_numInodes2.patch, 1.8 KB (added by jvff, 14 years ago)

Patch containing only changes relative to inode bounds checking.

  • src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp

     
    167167{
    168168    Volume* volume = (Volume*)_volume->private_volume;
    169169
    170     if (id < 2 || id > volume->NumBlocks()) {
     170    if (id < 2 || id > volume->NumInodes()) {
    171171        dprintf("ext2: inode at %Ld requested!\n", id);
    172172        return B_ERROR;
    173173    }
  • src/add-ons/kernel/file_systems/ext2/Volume.cpp

     
    278278    fBlockSize = 1UL << fSuperBlock.BlockShift();
    279279    fFirstDataBlock = fSuperBlock.FirstDataBlock();
    280280
     281    fNumInodes = fSuperBlock.NumInodes();
    281282    fNumGroups = (fSuperBlock.NumBlocks() - fFirstDataBlock - 1)
    282283        / fSuperBlock.BlocksPerGroup() + 1;
    283284    fGroupsPerBlock = fBlockSize / sizeof(ext2_block_group);
  • src/add-ons/kernel/file_systems/ext2/Volume.h

     
    3838            fs_volume*          FSVolume() const { return fFSVolume; }
    3939            const char*         Name() const;
    4040
     41            uint32              NumInodes() const
     42                                    { return fNumInodes; }
    4143            off_t               NumBlocks() const
    4244                                    { return fSuperBlock.NumBlocks(); }
    4345            off_t               FreeBlocks() const
     
    7476            uint32              fBlockSize;
    7577            uint32              fBlockShift;
    7678            uint32              fFirstDataBlock;
     79            uint32              fNumInodes;
    7780            uint32              fNumGroups;
    7881            uint32              fGroupsPerBlock;
    7982            ext2_block_group**  fGroupBlocks;