]> granicus.if.org Git - php/commitdiff
Fixed bug #77722
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 12 Mar 2019 08:57:51 +0000 (09:57 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 12 Mar 2019 08:58:09 +0000 (09:58 +0100)
NEWS
sapi/cli/php_cli_server.c

diff --git a/NEWS b/NEWS
index 6af06b11032096d8ad3f60d4462aedb273e32f53..dc4bb61e2a9dd94567236c68bd30ddb63dda8c4a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,10 @@ PHP                                                                        NEWS
   . Fixed bug #77345 (Stack Overflow caused by circular reference in garbage
     collection). (Alexandru Patranescu, Nikita, Dmitry)
 
+- CLI Server:
+  . Fixed bug #77722 (Incorrect IP set to $_SERVER['REMOTE_ADDR'] on the
+    localhost). (Nikita)
+
 - Apache2Handler:
   . Fixed bug #77648 (BOM in sapi/apache2handler/php_functions.c). (cmb)
 
index 5386aa54c64f0c7506fa67aebe10d83aa1185238..b324958052e7b12b8d9e790ef75f6609f427604d 100644 (file)
@@ -637,10 +637,14 @@ static void sapi_cli_server_register_variables(zval *track_vars_array) /* {{{ */
                char *tmp;
                if ((tmp = strrchr(client->addr_str, ':'))) {
                        char addr[64], port[8];
+                       const char *addr_start = client->addr_str, *addr_end = tmp;
+                       if (addr_start[0] == '[') addr_start++;
+                       if (addr_end[-1] == ']') addr_end--;
+
                        strncpy(port, tmp + 1, 8);
                        port[7] = '\0';
-                       strncpy(addr, client->addr_str, tmp - client->addr_str);
-                       addr[tmp - client->addr_str] = '\0';
+                       strncpy(addr, addr_start, addr_end - addr_start);
+                       addr[addr_end - addr_start] = '\0';
                        sapi_cli_server_register_variable(track_vars_array, "REMOTE_ADDR", addr);
                        sapi_cli_server_register_variable(track_vars_array, "REMOTE_PORT", port);
                } else {