Changeset 77a2d77 in mainline


Ignore:
Timestamp:
2011-03-29T18:51:34Z (13 years ago)
Author:
Maurizio Lombardi <m.lombardi85@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
2cf95e8
Parents:
ba5beaf
Message:

Do not search beyond the bitmap size limit

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/minixfs/mfs_balloc.c

    rba5beaf r77a2d77  
    1212{
    1313        struct mfs_sb_info *sbi;
    14         unsigned start_block;
     14        uint32_t limit;
    1515        unsigned long nblocks;
    16         unsigned *search, i;
     16        unsigned *search, i, start_block;
    1717        int r, freebit;
    1818
     
    2525                start_block = 2 + sbi->ibmap_blocks;
    2626                nblocks = sbi->zbmap_blocks;
     27                limit = sbi->nzones;
    2728        } else {
    2829                /*bid == BMAP_INODE*/
     
    3031                start_block = 2;
    3132                nblocks = sbi->ibmap_blocks;
     33                limit = sbi->ninodes;
    3234        }
    3335
     
    5254                /*Free bit found, compute real index*/
    5355                *idx = (freebit + sbi->block_size * 8 * i);
     56                if (*idx > limit) {
     57                        /*Index is beyond the limit, it is invalid*/
     58                        block_put(b);
     59                        break;
     60                }
     61
    5462                *search = i;
    5563                b->dirty = true;
    5664                block_put(b);
    5765                goto found;
    58                
    5966        }
    6067
Note: See TracChangeset for help on using the changeset viewer.