|
@@ -125,6 +125,7 @@ crypto_comp_decompress(const struct ubifs_info *c, struct crypto_comp *tfm,
|
|
{
|
|
{
|
|
struct ubifs_compressor *compr = ubifs_compressors[tfm->compressor];
|
|
struct ubifs_compressor *compr = ubifs_compressors[tfm->compressor];
|
|
int err;
|
|
int err;
|
|
|
|
+ size_t tmp_len = *dlen;
|
|
|
|
|
|
if (compr->compr_type == UBIFS_COMPR_NONE) {
|
|
if (compr->compr_type == UBIFS_COMPR_NONE) {
|
|
memcpy(dst, src, slen);
|
|
memcpy(dst, src, slen);
|
|
@@ -132,11 +133,12 @@ crypto_comp_decompress(const struct ubifs_info *c, struct crypto_comp *tfm,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
- err = compr->decompress(src, slen, dst, (size_t *)dlen);
|
|
|
|
|
|
+ err = compr->decompress(src, slen, dst, &tmp_len);
|
|
if (err)
|
|
if (err)
|
|
ubifs_err(c, "cannot decompress %d bytes, compressor %s, "
|
|
ubifs_err(c, "cannot decompress %d bytes, compressor %s, "
|
|
"error %d", slen, compr->name, err);
|
|
"error %d", slen, compr->name, err);
|
|
|
|
|
|
|
|
+ *dlen = tmp_len;
|
|
return err;
|
|
return err;
|
|
|
|
|
|
return 0;
|
|
return 0;
|