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)
|
static int compress_842(const void *in, void *out, size_t inlen, size_t outlen)
|
||||||
{
|
{
|
||||||
int ret;
|
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) {
|
if (ret) {
|
||||||
pr_err("sw842_compress error; compression failed!\n");
|
pr_err("sw842_compress error; compression failed!\n");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
return outlen;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int decompress_842(void *in, void *out, size_t inlen, size_t outlen)
|
static int decompress_842(void *in, void *out, size_t inlen, size_t outlen)
|
||||||
{
|
{
|
||||||
int ret;
|
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) {
|
if (ret) {
|
||||||
pr_err("sw842_decompress error, ret = %d!\n", ret);
|
pr_err("sw842_decompress error, ret = %d!\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
return outlen;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void allocate_842(void)
|
static void allocate_842(void)
|
||||||
|
|
Loading…
Reference in New Issue