From 33e83caff59f7b6ff2ba62d3b496235ef5c4e543 Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Mon, 8 Apr 2013 11:20:55 -0700 Subject: [PATCH] cbfstool: completely initialize input and output streams The LZMA glue code in cbfstool was recently rewritten from C++ to plain C code in: commit aa3f7ba36ebe3a933aa664f826382f60b31e86f1 Author: Stefan Reinauer Date: Thu Mar 28 16:51:45 2013 -0700 cbfstool: Replace C++ code with C code Reviewed-on: http://review.coreboot.org/3010 In the progress of doing so, the stream position for the input stream and output stream was not reset properly. This would cause LZMA producing corrupt data when running the compression function multiple times. Change-Id: I096e08f263aaa1931517885be4610bbd1de8331e Signed-off-by: Stefan Reinauer Reviewed-on: http://review.coreboot.org/3040 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich --- util/cbfstool/lzma/lzma.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/util/cbfstool/lzma/lzma.c b/util/cbfstool/lzma/lzma.c index 914d8b7da9..579784eae0 100644 --- a/util/cbfstool/lzma/lzma.c +++ b/util/cbfstool/lzma/lzma.c @@ -61,7 +61,7 @@ static ISzAlloc LZMAalloc = { SzAlloc, SzFree }; /* Streaming API */ -typedef struct vector { +typedef struct { char *p; size_t pos; size_t size; @@ -147,9 +147,11 @@ void do_lzma_compress(char *in, int in_len, char *out, int *out_len) } instream.p = in; + instream.pos = 0; instream.size = in_len; outstream.p = out; + outstream.pos = 0; outstream.size = in_len; put_64(propsEncoded + LZMA_PROPS_SIZE, in_len);