]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
When using ALIGN_DOWN() macro, the signedness of types must match to avoid UBSAN...
authorMika Lindqvist <postmaster@raasu.org>
Tue, 5 May 2026 19:59:27 +0000 (22:59 +0300)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Wed, 6 May 2026 18:15:49 +0000 (20:15 +0200)
adler32_p.h
arch/generic/adler32_c.c

index efd8878e10ea5c88d1f36b0856c4944593035867..b63ad95f946555c050e182b5700271b2d081a865 100644 (file)
@@ -136,7 +136,7 @@ Z_FORCEINLINE static uint32_t adler32_copy_tail(uint32_t adler, uint8_t *dst, co
         Z_UNUSED(MAX_LEN);
         /* Process using packed 64-bit arithmetic when source is aligned */
         while (len >= 8 && ((uintptr_t)buf & 7) == 0) {
-            size_t chunk = MIN(ALIGN_DOWN(len, 8), ADLER32_SWAR_MAX_BYTES);
+            size_t chunk = MIN(ALIGN_DOWN(len, (size_t)8), (size_t)ADLER32_SWAR_MAX_BYTES);
             adler32_swar(&adler, dst, buf, chunk, &sum2, COPY);
             buf += chunk;
             if (COPY)
index 0f2224b06f2588719928eeaf8da90b9f9e2fee90..80329e1c884c0ec4741aa685e7f5be9e27ce02df 100644 (file)
@@ -41,7 +41,7 @@ Z_INTERNAL uint32_t adler32_c(uint32_t adler, const uint8_t *buf, size_t len) {
         n = NMAX;
 
         do {
-            size_t chunk = MIN(ALIGN_DOWN(n, 8), ADLER32_SWAR_MAX_BYTES);
+            size_t chunk = MIN(ALIGN_DOWN(n, (size_t)8), (size_t)ADLER32_SWAR_MAX_BYTES);
             adler32_swar(&adler, NULL, buf, chunk, &sum2, 0);
             buf += chunk;
             n -= chunk;