Message ID | 1388455021-4887-1-git-send-email-ant@area128.com |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
On Tue, Dec 31, 2013 at 02:57:01AM +0100, Antonios Vamporakis wrote: > Variable uncompressedSize references the space available, while outSizeFull is > the actual expected uncompressed size. Using the wrong value causes LzmaDecode > to return SZ_ERROR_INPUT_EOF. Problem was introduced in commit afca294. While > at it add additional debug message. > > Signed-off-by: Antonios Vamporakis <ant@area128.com> > CC: Kees Cook <keescook@chromium.org> > CC: Simon Glass <sjg@chromium.org> > CC: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> > CC: Luka Perkov <luka@openwrt.org> Applied to u-boot/master, thanks!
diff --git a/lib/lzma/LzmaTools.c b/lib/lzma/LzmaTools.c index 0aec2f9..90d31cd 100644 --- a/lib/lzma/LzmaTools.c +++ b/lib/lzma/LzmaTools.c @@ -102,7 +102,7 @@ int lzmaBuffToBuffDecompress (unsigned char *outStream, SizeT *uncompressedSize, return SZ_ERROR_OUTPUT_EOF; /* Decompress */ - outProcessed = *uncompressedSize; + outProcessed = outSizeFull; WATCHDOG_RESET(); @@ -111,6 +111,9 @@ int lzmaBuffToBuffDecompress (unsigned char *outStream, SizeT *uncompressedSize, inStream + LZMA_DATA_OFFSET, &compressedSize, inStream, LZMA_PROPS_SIZE, LZMA_FINISH_END, &state, &g_Alloc); *uncompressedSize = outProcessed; + + debug("LZMA: Uncompresed ................ 0x%zx\n", outProcessed); + if (res != SZ_OK) { return res; }
Variable uncompressedSize references the space available, while outSizeFull is the actual expected uncompressed size. Using the wrong value causes LzmaDecode to return SZ_ERROR_INPUT_EOF. Problem was introduced in commit afca294. While at it add additional debug message. Signed-off-by: Antonios Vamporakis <ant@area128.com> CC: Kees Cook <keescook@chromium.org> CC: Simon Glass <sjg@chromium.org> CC: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> CC: Luka Perkov <luka@openwrt.org> --- lib/lzma/LzmaTools.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)