[U-Boot] [PATCH] lib/lzo: bugfix when input data is not compressed

When the input data is not compressed at all, lzo1x_decompress_safe will fail, so call memcpy() instead.
Signed-off-by: Joris Lijssens joris.lijssens@gmail.com ---
lib/lzo/lzo1x_decompress.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/lib/lzo/lzo1x_decompress.c b/lib/lzo/lzo1x_decompress.c index ebdf10b..ccc90b8 100644 --- a/lib/lzo/lzo1x_decompress.c +++ b/lib/lzo/lzo1x_decompress.c @@ -98,18 +98,25 @@ int lzop_decompress(const unsigned char *src, size_t src_len, if (dlen > remaining) return LZO_E_OUTPUT_OVERRUN;
- /* decompress */ - tmp = dlen; - r = lzo1x_decompress_safe((u8 *) src, slen, dst, &tmp); + /* When the input data is not compressed at all, + * lzo1x_decompress_safe will fail, so call memcpy() + * instead */ + if (dlen == slen) { + memcpy(dst, src, slen); + } else { + /* decompress */ + tmp = dlen; + r = lzo1x_decompress_safe((u8 *)src, slen, dst, &tmp); + + if (r != LZO_E_OK) { + *dst_len = dst - start; + return r; + }
- if (r != LZO_E_OK) { - *dst_len = dst - start; - return r; + if (dlen != tmp) + return LZO_E_ERROR; }
- if (dlen != tmp) - return LZO_E_ERROR; - src += slen; dst += dlen; remaining -= dlen;

On Fri, Jun 17, 2016 at 10:46:58AM +0200, Joris Lijssens wrote:
When the input data is not compressed at all, lzo1x_decompress_safe will fail, so call memcpy() instead.
Signed-off-by: Joris Lijssens joris.lijssens@gmail.com
Applied to u-boot/master, thanks!
participants (2)
-
Joris Lijssens
-
Tom Rini