Skip to content

Commit

Permalink
Decompressors: check for write errors in decompress_unlzo.c
Browse files Browse the repository at this point in the history
The return value of flush() is not checked in unlzo().  This means that
the decompressor won't stop even if the caller doesn't want more data.
This can happen e.g.  with a corrupt LZO-compressed initramfs image.

Signed-off-by: Lasse Collin <lasse.collin@tukaani.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Alain Knaff <alain@knaff.lu>
Cc: Albin Tonnerre <albin.tonnerre@free-electrons.com>
Cc: Phillip Lougher <phillip@lougher.demon.co.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Lasse Collin authored and Linus Torvalds committed Jan 13, 2011
1 parent eb0cf3e commit 8f9b54a
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/decompress_unlzo.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,8 @@ STATIC inline int INIT unlzo(u8 *input, int in_len,
}
}

if (flush)
flush(out_buf, dst_len);
if (flush && flush(out_buf, dst_len) != dst_len)
goto exit_2;
if (output)
out_buf += dst_len;
if (posp)
Expand Down

0 comments on commit 8f9b54a

Please sign in to comment.