diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2011-01-12 20:01:17 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-13 11:03:24 -0500 |
commit | 8218a437234309faa5725f82c33c3523788d5f68 (patch) | |
tree | 9d21b42e47fa5a450df28246c4d26221d6ef6105 /lib | |
parent | 22e4420820bdab66fee8c0b0a8acdd35c1000595 (diff) |
Decompressors: fix header validation in decompress_unlzma.c
Validation of header.pos calls error() but doesn't make the function
return to indicate an error to the caller. Instead the decoding is
attempted with invalid header.pos. This fixes it.
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>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/decompress_unlzma.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/decompress_unlzma.c b/lib/decompress_unlzma.c index 48173594ce01..696c34a274cf 100644 --- a/lib/decompress_unlzma.c +++ b/lib/decompress_unlzma.c | |||
@@ -574,8 +574,10 @@ STATIC inline int INIT unlzma(unsigned char *buf, int in_len, | |||
574 | ((unsigned char *)&header)[i] = *rc.ptr++; | 574 | ((unsigned char *)&header)[i] = *rc.ptr++; |
575 | } | 575 | } |
576 | 576 | ||
577 | if (header.pos >= (9 * 5 * 5)) | 577 | if (header.pos >= (9 * 5 * 5)) { |
578 | error("bad header"); | 578 | error("bad header"); |
579 | goto exit_1; | ||
580 | } | ||
579 | 581 | ||
580 | mi = 0; | 582 | mi = 0; |
581 | lc = header.pos; | 583 | lc = header.pos; |