From 7f9872387e38a05b11ce233b4d142325d742c487 Mon Sep 17 00:00:00 2001 From: Niklas Keller Date: Sun, 24 Mar 2019 19:39:25 +0100 Subject: [PATCH] Fix #77794: Incorrect Date header format in built-in server - Fix the date format to be compliant with https://tools.ietf.org/html/rfc7231#section-7.1.1.2 - Fix date format length and use GMT time - Previously, local time was used instead of GMT. - Remove extra whitespace - Simplify string appends in php_cli_server.c --- sapi/cli/php_cli_server.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c index 198afc8a6b016..cdcd93ac72c7e 100644 --- a/sapi/cli/php_cli_server.c +++ b/sapi/cli/php_cli_server.c @@ -349,17 +349,16 @@ static void append_essential_headers(smart_str* buffer, php_cli_server_client *c struct timeval tv = {0}; if (NULL != (val = zend_hash_str_find_ptr(&client->request.headers, "host", sizeof("host")-1))) { - smart_str_appendl_ex(buffer, "Host", sizeof("Host") - 1, persistent); - smart_str_appendl_ex(buffer, ": ", sizeof(": ") - 1, persistent); + smart_str_appends_ex(buffer, "Host: ", persistent); smart_str_appends_ex(buffer, val, persistent); - smart_str_appendl_ex(buffer, "\r\n", 2, persistent); + smart_str_appends_ex(buffer, "\r\n", persistent); } if (!gettimeofday(&tv, NULL)) { - zend_string *dt = php_format_date("r", 1, tv.tv_sec, 1); - smart_str_appendl_ex(buffer, "Date: ", 6, persistent); + zend_string *dt = php_format_date("D, d M Y H:i:s", sizeof("D, d M Y H:i:s") - 1, tv.tv_sec, 0); + smart_str_appends_ex(buffer, "Date: ", persistent); smart_str_appends_ex(buffer, dt->val, persistent); - smart_str_appendl_ex(buffer, "\r\n", 2, persistent); + smart_str_appends_ex(buffer, " GMT\r\n", persistent); zend_string_release(dt); }