From d1773e6881caba229575fa7e0525846697dd4e21 Mon Sep 17 00:00:00 2001 From: Oto Valek Date: Fri, 24 Feb 2023 21:39:56 +0100 Subject: [PATCH] BUG/MINOR: http-fetch: recognize IPv6 addresses in square brackets in req.hdr_ip() If an IPv6 address is enclosed in square brackets [], trim them before calling inet_pton(). This is to comply with RFC7239 6.1 and RFC3986 3.2.2. --- src/http_fetch.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/http_fetch.c b/src/http_fetch.c index 8c01e03434..f855a675fa 100644 --- a/src/http_fetch.c +++ b/src/http_fetch.c @@ -1024,7 +1024,15 @@ static int smp_fetch_hdr_ip(const struct arg *args, struct sample *smp, const ch /* IPv4 address suffixed with ':' followed by a valid port number */ smp->data.type = SMP_T_IPV4; break; + } else if (temp->area[0] == '[' && temp->area[smp->data.u.str.data-1] == ']') { + /* IPv6 address enclosed in square brackets */ + temp->area[smp->data.u.str.data-1] = '\0'; + if (inet_pton(AF_INET6, temp->area+1, &smp->data.u.ipv6)) { + smp->data.type = SMP_T_IPV6; + break; + } } else if (inet_pton(AF_INET6, temp->area, &smp->data.u.ipv6)) { + /* plain IPv6 address */ smp->data.type = SMP_T_IPV6; break; }