diff options
Diffstat (limited to 'src/recover.c')
-rw-r--r-- | src/recover.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/recover.c b/src/recover.c index 1547fe9..1c720ba 100644 --- a/src/recover.c +++ b/src/recover.c @@ -154,7 +154,7 @@ return ; blk_t /*ref_blk*/x, int /*ref_offset*/y, void *priv ) { //FIXME: - if (*blocknr > fs->super->s_blocks_count) + if (*blocknr >= fs->super->s_blocks_count) return BLOCK_ERROR; struct alloc_stat *stat = priv; if ( ext2fs_test_block_bitmap ( fs->block_map, *blocknr )) @@ -176,6 +176,9 @@ static int read_syslink_block ( ext2_filsys fs, blk_t *blocknr, e2_blkcnt_t bloc errcode_t retval; int blocksize = fs->blocksize; + if (*blocknr >= fs->super->s_blocks_count) + return BLOCK_ERROR; + if (((struct privat*)priv)->flag){ int allocated = ext2fs_test_block_bitmap ( fs->block_map, *blocknr ); if ( allocated ){ @@ -205,6 +208,8 @@ static int write_block ( ext2_filsys fs, blk_t *blocknr, e2_blkcnt_t blockcnt, errcode_t retval; int blocksize = fs->blocksize; + if (*blocknr >= fs->super->s_blocks_count) + return BLOCK_ERROR; #ifdef DEBUG printf("%c",(ext2fs_test_block_bitmap ( fs->block_map, *blocknr ))? 'X' : 'O'); #endif |