From a7739be22f8b376c58d666caa4479005e14bc2fa Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 12 Mar 2019 09:57:51 +0100 Subject: [PATCH] Fixed bug #77722 --- NEWS | 4 ++++ sapi/cli/php_cli_server.c | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 6af06b1103..dc4bb61e2a 100644 --- 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) diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c index 5386aa54c6..b324958052 100644 --- a/sapi/cli/php_cli_server.c +++ b/sapi/cli/php_cli_server.c @@ -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 { -- 2.40.0