lz4: ensure length does not wrap
Given some pathologically compressed data, lz4 could possibly decide to wrap a few internal variables, causing unknown things to happen. Catch this before the wrapping happens and abort the decompression. Reported-by: "Don A. Bailey" <donb@securitymouse.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
206a81c184
commit
206204a116
1 changed files with 2 additions and 0 deletions
|
@ -72,6 +72,8 @@ static int lz4_uncompress(const char *source, char *dest, int osize)
|
||||||
len = *ip++;
|
len = *ip++;
|
||||||
for (; len == 255; length += 255)
|
for (; len == 255; length += 255)
|
||||||
len = *ip++;
|
len = *ip++;
|
||||||
|
if (unlikely(length > (size_t)(length + len)))
|
||||||
|
goto _output_error;
|
||||||
length += len;
|
length += len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue