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>
This commit is contained in:
parent
96044745cb
commit
a2cfc8d593
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user