Re: svn: /php/php-src/ branches/PHP_5_4/NEWS branches/PHP_5_4/sapi/cli/php_cli_server.c branches/PHP_5_4/sapi/cli/tests/php_cli_server_014.phpt
trunk/sapi/cli/php_cli_server.c trunk/sapi/cli/tests/php_cli_server_014.phpt
| From: | Laruence | Date: | Fri, 09 Dec 2011 06:30:57 +0000 |
| Subject: | Re: svn: /php/php-src/ branches/PHP_5_4/NEWS branches/PHP_5_4/sapi/cli/php_cli_server.c branches/PHP_5_4/sapi/cli/tests/php_cli_server_014.phpt trunk/sapi/cli/php_cli_server.c trunk/sapi/cli/tests/php_cli_server_014.phpt |
||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-67246@lists.php.net to get a copy of this message | ||
Hi:
this fix should be a suboptimal fix, the problem is for static
file, builtin server bypass the sapi_activate (in the
send_error_page), call sapi_activate_header_only instead.
then when it call the sapi_deactivate, crashed.
I have tried to make a optimize fix , but failed.
I will have another try later, in this weekend maybe.
thanks.
On Fri, Dec 9, 2011 at 1:37 PM, Xinchen Hui <laruence@php.net> wrote:
> laruence Fri, 09 Dec 2011 05:37:41 +0000
>
> Revision:
> http://svn.php.net/viewvc?view=revision&revision=320716
>
> Log:
> Fixed bug #60477 (Segfault after two multipart/form-data POST requests)
>
> Bug: https://bugs.php.net/60477 (Assigned) Segfault after two
> multipart/form-data POST requestes, one 200 RQ and one 404
>
> Changed paths:
> U php/php-src/branches/PHP_5_4/NEWS
> U php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c
> A php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_014.phpt
> U php/php-src/trunk/sapi/cli/php_cli_server.c
> A php/php-src/trunk/sapi/cli/tests/php_cli_server_014..phpt
>
> Modified: php/php-src/branches/PHP_5_4/NEWS
> ===================================================================
> --- php/php-src/branches/PHP_5_4/NEWS 2011-12-09 05:25:05 UTC (rev 320715)
> +++ php/php-src/branches/PHP_5_4/NEWS 2011-12-09 05:37:41 UTC (rev 320716)
> @@ -1,6 +1,9 @@
> PHP
> NEWS
> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
> ?? Dec 2011, PHP 5.4.0 RC4
> +- CLI SAPI:
> + . Fixed bug #60477 (Segfault after two multipart/form-data POST requests).
> + (Laruence)
>
> 08 Dec 2011, PHP 5.4.0 RC3
> - Core:
>
> Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c
> ===================================================================
> --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-12-09 05:25:05 UTC (rev
> 320715)
> +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-12-09 05:37:41 UTC (rev
> 320716)
> @@ -1921,6 +1921,7 @@
> php_cli_server_close_connection(server, client TSRMLS_CC);
> destroy_request_info(&SG(request_info));
> SG(server_context) = NULL;
> + SG(rfc1867_uploaded_files) = NULL;
> return SUCCESS;
> }
> /* }}} */
>
> Added: php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_014.phpt
> ===================================================================
> --- php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_014.phpt
> (rev 0)
> +++ php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_014.phpt 2011-12-09 05:37:41 UTC
> (rev 320716)
> @@ -0,0 +1,76 @@
> +--TEST--
> +Bug #60477: Segfault after two multipart/form-data POST requestes
> +--SKIPIF--
> +<?php
> +include "skipif.inc";
> +?>
> +--FILE--
> +<?php
> +include "php_cli_server.inc";
> +php_cli_server_start('echo done, "\n";', TRUE);
> +
> +list($host, $port) = explode(':', PHP_CLI_SERVER_ADDRESS);
> +$port = intval($port)?:80;
> +$output = '';
> +
> +$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
> +if (!$fp) {
> + die("connect failed");
> +}
> +
> +if(fwrite($fp, <<<HEADER
> +POST /index.php HTTP/1.1
> +Host: {$host}
> +Content-Type: multipart/form-data; boundary=---------123456789
> +Content-Length: 70
> +
> +---------123456789
> +Content-Type: application/x-www-form-urlencoded
> +a=b
> +HEADER
> +)) {
> + while (!feof($fp)) {
> + $output .= fgets($fp);
> + }
> +}
> +
> +fclose($fp);
> +
> +$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
> +if(fwrite($fp, <<<HEADER
> +POST /main/no-exists.php HTTP/1.1
> +Host: {$host}
> +Content-Type: multipart/form-data; boundary=---------123456789
> +Content-Length: 70
> +
> +---------123456789
> +Content-Type: application/x-www-form-urlencoded
> +a=b
> +HEADER
> +)) {
> + while (!feof($fp)) {
> + $output .= fgets($fp);
> + }
> +}
> +
> +echo preg_replace("/<style
> type=\"text\/css\">(.*?)<\/style>/s", "<style
> type=\"text/css\">AAA</style>", $output), "\n";
> +fclose($fp);
> +
> +?>
> +--EXPECTF--
> +
> +HTTP/1.1 200 OK
> +Host: %s
> +Connection: closed
> +X-Powered-By: %s
> +Content-type: %s
> +
> +done
> +HTTP/1.1 404 Not Found
> +Host: %s
> +Connection: closed
> +Content-Type: %s
> +Content-Length: %d
> +
> +<html><head><title>404 Not Found</title><style
> type="text/css">AAA</style>
> +</head><body><h1 class="h">Not Found</h1><p>The
> requested resource /main/no-exists.php was not found on this
> server.</p></body></html>
>
> Modified: php/php-src/trunk/sapi/cli/php_cli_server.c
> ===================================================================
> --- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-12-09 05:25:05 UTC (rev 320715)
> +++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-12-09 05:37:41 UTC (rev 320716)
> @@ -1921,6 +1921,7 @@
> php_cli_server_close_connection(server, client TSRMLS_CC);
> destroy_request_info(&SG(request_info));
> SG(server_context) = NULL;
> + SG(rfc1867_uploaded_files) = NULL;
> return SUCCESS;
> }
> /* }}} */
>
> Added: php/php-src/trunk/sapi/cli/tests/php_cli_server_014.phpt
> ===================================================================
> --- php/php-src/trunk/sapi/cli/tests/php_cli_server_014.phpt
> (rev 0)
> +++ php/php-src/trunk/sapi/cli/tests/php_cli_server_014.phpt 2011-12-09 05:37:41 UTC (rev
> 320716)
> @@ -0,0 +1,76 @@
> +--TEST--
> +Bug #60477: Segfault after two multipart/form-data POST requestes
> +--SKIPIF--
> +<?php
> +include "skipif.inc";
> +?>
> +--FILE--
> +<?php
> +include "php_cli_server.inc";
> +php_cli_server_start('echo done, "\n";', TRUE);
> +
> +list($host, $port) = explode(':', PHP_CLI_SERVER_ADDRESS);
> +$port = intval($port)?:80;
> +$output = '';
> +
> +$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
> +if (!$fp) {
> + die("connect failed");
> +}
> +
> +if(fwrite($fp, <<<HEADER
> +POST /index.php HTTP/1.1
> +Host: {$host}
> +Content-Type: multipart/form-data; boundary=---------123456789
> +Content-Length: 70
> +
> +---------123456789
> +Content-Type: application/x-www-form-urlencoded
> +a=b
> +HEADER
> +)) {
> + while (!feof($fp)) {
> + $output .= fgets($fp);
> + }
> +}
> +
> +fclose($fp);
> +
> +$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
> +if(fwrite($fp, <<<HEADER
> +POST /main/no-exists.php HTTP/1.1
> +Host: {$host}
> +Content-Type: multipart/form-data; boundary=---------123456789
> +Content-Length: 70
> +
> +---------123456789
> +Content-Type: application/x-www-form-urlencoded
> +a=b
> +HEADER
> +)) {
> + while (!feof($fp)) {
> + $output .= fgets($fp);
> + }
> +}
> +
> +echo preg_replace("/<style
> type=\"text\/css\">(.*?)<\/style>/s", "<style
> type=\"text/css\">AAA</style>", $output), "\n";
> +fclose($fp);
> +
> +?>
> +--EXPECTF--
> +
> +HTTP/1.1 200 OK
> +Host: %s
> +Connection: closed
> +X-Powered-By: %s
> +Content-type: %s
> +
> +done
> +HTTP/1.1 404 Not Found
> +Host: %s
> +Connection: closed
> +Content-Type: %s
> +Content-Length: %d
> +
> +<html><head><title>404 Not Found</title><style
> type="text/css">AAA</style>
> +</head><body><h1 class="h">Not Found</h1><p>The
> requested resource /main/no-exists.php was not found on this
> server.</p></body></html>
>
>
> --
> PHP CVS Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
--
Laruence Xinchen Hui
http://www.laruence.com/