From 97316c794f7b3ef676e1299a3b41c1ac80f07101 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Thu, 11 Sep 2025 14:37:38 +0200 Subject: [PATCH] get_destination_from_https_headers(): Properly handle IPv6 addresses --- parsers.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/parsers.c b/parsers.c index 1b7e2de2..2ab405fa 100644 --- a/parsers.c +++ b/parsers.c @@ -5040,7 +5040,35 @@ jb_err get_destination_from_https_headers(const struct list *headers, struct htt http->hostport = p; freez(http->host); http->host = q; - q = strchr(http->host, ':'); + if (*p == '[') + { + /* Numeric IPv6 address delimited by brackets */ + p++; + + q = strchr(p, ']'); + if (q == NULL) + { + /* Missing closing bracket */ + return JB_ERR_PARSE; + } + + *q++ = '\0'; + + if (*q == '\0') + { + q = NULL; + } + else if (*q != ':') + { + /* Garbage after closing bracket */ + return JB_ERR_PARSE; + } + } + else + { + /* Plain non-escaped hostname */ + q = strchr(http->host, ':'); + } if (q != NULL) { /* Terminate hostname and evaluate port string */ -- 2.50.1