diff options
author | Sebastian Pop <s.pop@samsung.com> | 2018-08-15 15:28:41 -0500 |
---|---|---|
committer | Hans Kristian Rosbach <hk-github@circlestorm.org> | 2018-09-20 08:09:07 +0200 |
commit | 9992d3b599b2cfeed5aa34747c8c3e7fe65261d7 (patch) | |
tree | 955bf0167f01a21d4cf763c9f117216028823f5e /inflate.c | |
parent | 407f37589d959dff703446f04b56580f1dcf925c (diff) |
fix #187: remove errors exposed by undefined behavior sanitizer
Move decrement in loop to avoid the following errors:
adler32.c:91:19: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'size_t' (aka 'unsigned long')
adler32.c:136:19: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'size_t' (aka 'unsigned long')
inflate.c:972:32: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'unsigned int'
Fix the following bugs as recommended by Mika Lindqvist:
arch/x86/deflate_quick.c:233:22: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'unsigned int'
arch/x86/fill_window_sse.c:52:28: runtime error: unsigned integer overflow: 1 - 8192 cannot be represented in type 'unsigned int'
Diffstat (limited to 'inflate.c')
-rw-r--r-- | inflate.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -969,8 +969,10 @@ int ZEXPORT PREFIX(inflate)(PREFIX3(stream) *strm, int flush) { state->mode = BAD; break; } - while (copy--) + while (copy) { + --copy; state->lens[state->have++] = (uint16_t)len; + } } } |