]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: tree-wide: mark a few numeric constants as explicitly long long
authorWilly Tarreau <w@1wt.eu>
Fri, 28 Jan 2022 08:39:24 +0000 (09:39 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 28 Jan 2022 18:04:02 +0000 (19:04 +0100)
At a few places in the code the switch/case ond flags are tested against
64-bit constants without explicitly being marked as long long. Some
32-bit compilers complain that the constant is too large for a long, and
other likely always use long long there. Better fix that as it's uncertain
what others which do not complain do. It may be backported to avoid doubts
on uncommon platforms if needed, as it touches very few areas.

include/haproxy/h1.h
include/haproxy/intops.h
src/h1_htx.c

index 1891c81ce9be4ad8ca91cc47987d6cbec2c16d77..8f520595c178738aa62628ca3192143f548f7f89 100644 (file)
@@ -278,7 +278,7 @@ static inline int h1_parse_chunk_size(const struct buffer *buf, int start, int s
                if (unlikely(++ptr >= end))
                        ptr = b_orig(buf);
                chunk = (chunk << 4) + c;
-               if (unlikely(chunk & 0xF0000000000000)) {
+               if (unlikely(chunk & 0xF0000000000000ULL)) {
                        /* Don't get more than 13 hexa-digit (2^52 - 1) to never fed possibly
                         * bogus values from languages that use floats for their integers
                         */
index a812874e5c30cea8b6c3ca66226e8193cf72e17a..86b02aaf7c878a82f6223d39cc738778baa8070d 100644 (file)
@@ -396,15 +396,15 @@ static inline unsigned int __read_uint(const char **s, const char *end)
 static inline int __varint_bytes(uint64_t v)
 {
        switch (v) {
-       case 0x0000000000000000 ... 0x00000000000000ef: return 1;
-       case 0x00000000000000f0 ... 0x00000000000008ef: return 2;
-       case 0x00000000000008f0 ... 0x00000000000408ef: return 3;
-       case 0x00000000000408f0 ... 0x00000000020408ef: return 4;
-       case 0x00000000020408f0 ... 0x00000001020408ef: return 5;
-       case 0x00000001020408f0 ... 0x00000081020408ef: return 6;
-       case 0x00000081020408f0 ... 0x00004081020408ef: return 7;
-       case 0x00004081020408f0 ... 0x00204081020408ef: return 8;
-       case 0x00204081020408f0 ... 0x10204081020408ef: return 9;
+       case 0x0000000000000000ULL ... 0x00000000000000efULL: return 1;
+       case 0x00000000000000f0ULL ... 0x00000000000008efULL: return 2;
+       case 0x00000000000008f0ULL ... 0x00000000000408efULL: return 3;
+       case 0x00000000000408f0ULL ... 0x00000000020408efULL: return 4;
+       case 0x00000000020408f0ULL ... 0x00000001020408efULL: return 5;
+       case 0x00000001020408f0ULL ... 0x00000081020408efULL: return 6;
+       case 0x00000081020408f0ULL ... 0x00004081020408efULL: return 7;
+       case 0x00004081020408f0ULL ... 0x00204081020408efULL: return 8;
+       case 0x00204081020408f0ULL ... 0x10204081020408efULL: return 9;
        default: return 10;
        }
 }
index 331b79d3f3b3e01082370269f48d7c49a8c3e9eb..3d74a4c991aa816001bbd3ef3d81addcd9dd8fe4 100644 (file)
@@ -642,7 +642,7 @@ static size_t h1_parse_full_contig_chunks(struct h1m *h1m, struct htx **dsthtx,
                        /* Update current chunk size */
                        chksz = (chksz << 4) + c;
 
-                       if (unlikely(chksz & 0xF0000000000000)) {
+                       if (unlikely(chksz & 0xF0000000000000ULL)) {
                                /* Don't get more than 13 hexa-digit (2^52 - 1)
                                 * to never fed possibly bogus values from
                                 * languages that use floats for their integers