diff --git a/ext/standard/head.c b/ext/standard/head.c index ccef4be16bdfd..ac1e7cd46b103 100644 --- a/ext/standard/head.c +++ b/ext/standard/head.c @@ -375,6 +375,12 @@ PHP_FUNCTION(http_response_code) } RETURN_FALSE; } + + if (SG(sapi_headers).http_status_line) { + efree(SG(sapi_headers).http_status_line); + SG(sapi_headers).http_status_line = NULL; + } + zend_long old_response_code; old_response_code = SG(sapi_headers).http_response_code; diff --git a/sapi/cli/tests/gh18582.phpt b/sapi/cli/tests/gh18582.phpt new file mode 100644 index 0000000000000..4ad32354bfffd --- /dev/null +++ b/sapi/cli/tests/gh18582.phpt @@ -0,0 +1,38 @@ +--TEST-- +GH-18582: Allow http_response_code() to clear HTTP start-line +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +HTTP/1.1 403 Forbidden +Host: %s +Date: %s +Connection: close +X-Powered-By: %s +Content-type: text/html; charset=UTF-8 + +404 +403