aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2011-01-12 20:01:17 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-13 11:03:24 -0500
commit8218a437234309faa5725f82c33c3523788d5f68 (patch)
tree9d21b42e47fa5a450df28246c4d26221d6ef6105 /lib
parent22e4420820bdab66fee8c0b0a8acdd35c1000595 (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.c4
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;