[nginx] Realip: allowed square brackets with portless IPv6 address.

noreply at nginx.com noreply at nginx.com
Tue Nov 26 14:28:02 UTC 2024


details:   https://github.com/nginx/nginx/commit/b2a67d261496555a46b8931935bf822ce9938294
branches:  master
commit:    b2a67d261496555a46b8931935bf822ce9938294
user:      Roman Arutyunyan <arut at nginx.com>
date:      Mon, 11 Nov 2024 22:28:30 +0400
description:
Realip: allowed square brackets with portless IPv6 address.

When client address is received, IPv6 address could be specified without
square brackets and without port, as well as both with the brackets and
port.  The change allows IPv6 in square brackets and no port, which was
previously considered an error.  This format conforms to RFC 3986.

The change also affects proxy_bind and friends.

---
 src/core/ngx_inet.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/core/ngx_inet.c b/src/core/ngx_inet.c
index acb2ef48a..2233e617b 100644
--- a/src/core/ngx_inet.c
+++ b/src/core/ngx_inet.c
@@ -639,7 +639,11 @@ ngx_parse_addr_port(ngx_pool_t *pool, ngx_addr_t *addr, u_char *text,
 
         p = ngx_strlchr(text, last, ']');
 
-        if (p == NULL || p == last - 1 || *++p != ':') {
+        if (p == last - 1) {
+            return ngx_parse_addr(pool, addr, text + 1, len - 2);
+        }
+
+        if (p == NULL || *++p != ':') {
             return NGX_DECLINED;
         }
 


More information about the nginx-devel mailing list