]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: h1-htx: Fix a signess bug with char data type when parsing chunk size
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 11 Jun 2021 11:39:06 +0000 (13:39 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 11 Jun 2021 12:15:48 +0000 (14:15 +0200)
On some platform, a char may be unsigned. Of course, we should not rely on
the signess of a char to be portable. Unfortunatly, since the commit
a835f3cb ("MINOR: h1-htx: Use a correlation table to speed-up small chunks
parsing") we rely on it to test the value retrieved from the hexadecimal
correlation table when the size of a chunk is parsed.

To fix the bug, we now test the result is in the range [0,15] with a bitwise
AND.

This patch should fix the issue #1272. It is 2.5-specific, no backport is
needed except if the commit above is backported.

src/h1_htx.c

index b4c49c781febb650baccaf1bf48b6f3bbee3da27..878c45db8a8fb2cd21fe05d6edd9fb3f2d4f8660 100644 (file)
@@ -612,7 +612,7 @@ static size_t h1_parse_full_contig_chunks(struct h1m *h1m, struct htx **dsthtx,
                        c = hextable[(unsigned char)end[ridx]];
 
                        /* not a hex digit anymore */
-                       if (c 0)
+                       if (c & 0xF0)
                                break;
 
                        /* Update current chunk size */