]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Fixed unsigned integer overflow in adler32_avx and adler32_ssse3 when len is zero.
authorNathan Moinvaziri <nathan@nathanm.com>
Tue, 30 Jun 2020 00:51:52 +0000 (17:51 -0700)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Wed, 1 Jul 2020 09:47:36 +0000 (11:47 +0200)
    adler32_avx.c:108:15: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'size_t' (aka 'unsigned long')

arch/x86/adler32_avx.c
arch/x86/adler32_ssse3.c

index 14b7ad46b9baeb3a30d4ed5656e14e09bee309aa..cf6d6c149344764db57eeebc96682d680aec7bfa 100644 (file)
@@ -105,7 +105,8 @@ uint32_t adler32_avx2(uint32_t adler, const unsigned char *buf, size_t len) {
        s2[7] = sum2;
     }
 
-    while (len--) {
+    while (len) {
+       len--;
        adler += *buf++;
        sum2 += adler;
     }
index 123a737bb7f82f1a56962dd7f9cc4b61185827ec..345f60d5512786b0809703d68d4937fa0ff91a4f 100644 (file)
@@ -106,7 +106,8 @@ uint32_t adler32_ssse3(uint32_t adler, const unsigned char *buf, size_t len) {
        s2[3] = sum2;
     }
 
-    while (len--) {
+    while (len) {
+       len--;
        adler += *buf++;
        sum2 += adler;
     }