summaryrefslogtreecommitdiff
path: root/inflate.c
diff options
context:
space:
mode:
authorSebastian Pop <s.pop@samsung.com>2018-08-15 15:28:41 -0500
committerHans Kristian Rosbach <hk-github@circlestorm.org>2018-09-20 08:09:07 +0200
commit9992d3b599b2cfeed5aa34747c8c3e7fe65261d7 (patch)
tree955bf0167f01a21d4cf763c9f117216028823f5e /inflate.c
parent407f37589d959dff703446f04b56580f1dcf925c (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.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/inflate.c b/inflate.c
index bbab72e..469dde6 100644
--- a/inflate.c
+++ b/inflate.c
@@ -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;
+ }
}
}