diff options
author | Nick Terrell <terrelln@fb.com> | 2018-04-23 20:14:19 (GMT) |
---|---|---|
committer | Nick Terrell <terrelln@fb.com> | 2018-04-23 20:34:18 (GMT) |
commit | bb83cad98fdb15a7ade4cde582b98e836fb8ef11 (patch) | |
tree | 17bd7c7197b46ca8b8f1dfcc8cd501ec9e36d3bd /LICENSE | |
parent | 996d211aca5407c97b0c3736f20ae599f05f0d44 (diff) | |
download | lz4-bb83cad98fdb15a7ade4cde582b98e836fb8ef11.zip lz4-bb83cad98fdb15a7ade4cde582b98e836fb8ef11.tar.gz lz4-bb83cad98fdb15a7ade4cde582b98e836fb8ef11.tar.bz2 |
Fix input size validation edge cases
The bug is a read up to 2 bytes past the end of the buffer.
There are three cases for this bug, one for each test case added.
* An empty input causes `token = *ip++` to read one byte too far.
* A one byte input with `(token >> ML_BITS) == RUN_MASK` causes
one extra byte to be read without validation. This could be
combined with the first bug to cause 2 extra bytes to be read.
* The case pointed out in issue #508, where `ip == iend` at the
beginning of the loop after taking the shortcut.
Benchmarks show no regressions on clang or gcc-7 on both my mac
and devserver.
Fixes #508.
Diffstat (limited to 'LICENSE')
0 files changed, 0 insertions, 0 deletions