]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: http_fetch: make hdr_ip() resistant to empty fields
authorWilly Tarreau <w@1wt.eu>
Wed, 31 Mar 2021 09:41:36 +0000 (11:41 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 31 Mar 2021 09:45:42 +0000 (11:45 +0200)
The fix in commit 7b0e00d94 ("BUG/MINOR: http_fetch: make hdr_ip() reject
trailing characters") made hdr_ip() more sensitive to empty fields, for
example if a trusted proxy incorrectly sends the header with an empty
value, we could return 0.0.0.0 which is not correct. Let's make sure we
only assign an IPv4 type here when a non-empty address was found.

This should be backported to all branches where the fix above was
backported.

src/http_fetch.c

index a4169452f9bf8958f6e9ce920ece4b9c8a8f7602..6c569a75bb877f2716c39545602559301ca8428d 100644 (file)
@@ -1004,7 +1004,7 @@ static int smp_fetch_hdr_ip(const struct arg *args, struct sample *smp, const ch
                               smp->data.u.str.data);
                        temp->area[smp->data.u.str.data] = '\0';
                        len = url2ipv4((char *) temp->area, &smp->data.u.ipv4);
-                       if (len == smp->data.u.str.data) {
+                       if (len > 0 && len == smp->data.u.str.data) {
                                /* plain IPv4 address */
                                smp->data.type = SMP_T_IPV4;
                                break;