mirror of https://gitee.com/openkylin/linux.git
pstore: Avoid size casts for 842 compression
Instead of casting, make sure we don't end up with giant values and just perform regular assignments with unsigned int instead of re-cast size_t. Signed-off-by: Kees Cook <keescook@chromium.org>
This commit is contained in:
parent
239b716199
commit
555974068e
|
@ -452,27 +452,37 @@ static const struct pstore_zbackend backend_lz4hc = {
|
|||
static int compress_842(const void *in, void *out, size_t inlen, size_t outlen)
|
||||
{
|
||||
int ret;
|
||||
unsigned int size;
|
||||
|
||||
ret = sw842_compress(in, inlen, out, (unsigned int *)&outlen, workspace);
|
||||
if (outlen > UINT_MAX)
|
||||
return -EIO;
|
||||
size = outlen;
|
||||
|
||||
ret = sw842_compress(in, inlen, out, &size, workspace);
|
||||
if (ret) {
|
||||
pr_err("sw842_compress error; compression failed!\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
return outlen;
|
||||
return size;
|
||||
}
|
||||
|
||||
static int decompress_842(void *in, void *out, size_t inlen, size_t outlen)
|
||||
{
|
||||
int ret;
|
||||
unsigned int size;
|
||||
|
||||
ret = sw842_decompress(in, inlen, out, (unsigned int *)&outlen);
|
||||
if (outlen > UINT_MAX)
|
||||
return -EIO;
|
||||
size = outlen;
|
||||
|
||||
ret = sw842_decompress(in, inlen, out, &size);
|
||||
if (ret) {
|
||||
pr_err("sw842_decompress error, ret = %d!\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return outlen;
|
||||
return size;
|
||||
}
|
||||
|
||||
static void allocate_842(void)
|
||||
|
|
Loading…
Reference in New Issue