Skip to content

Commit

Permalink
Check input buffer size in zisofs
Browse files Browse the repository at this point in the history
This uses the new deflateBound() thing to sanity-check the input to the
zlib decompressor before we even bother to start reading in the blocks.

Problem noted by Tim Yamin <plasmaroo@gentoo.org>
  • Loading branch information
Linus Torvalds committed Aug 6, 2005
1 parent 243393c commit fab5a60
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions fs/isofs/compress.c
Expand Up @@ -129,8 +129,14 @@ static int zisofs_readpage(struct file *file, struct page *page)
cend = le32_to_cpu(*(__le32 *)(bh->b_data + (blockendptr & bufmask)));
brelse(bh);

if (cstart > cend)
goto eio;

csize = cend-cstart;

if (csize > deflateBound(1UL << zisofs_block_shift))
goto eio;

/* Now page[] contains an array of pages, any of which can be NULL,
and the locks on which we hold. We should now read the data and
release the pages. If the pages are NULL the decompressed data
Expand Down

0 comments on commit fab5a60

Please sign in to comment.