dmitry Mon Dec 3 15:08:02 2007 UTC Modified files: (Branch: PHP_5_2) /php-src NEWS /php-src/sapi/cgi cgi_main.c Log: Fixed weired behavior in CGI parameter parsing http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.1023&r2=1.2027.2.547.2.1024&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.1023 php-src/NEWS:1.2027.2.547.2.1024 --- php-src/NEWS:1.2027.2.547.2.1023 Mon Dec 3 14:11:09 2007 +++ php-src/NEWS Mon Dec 3 15:08:01 2007 @@ -1,6 +1,8 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2008, PHP 5.2.6 +- Fixed weired behavior in CGI parameter parsing. (Dmitry, Hannes Magnusson) + - Fixed bug #43482 (array_pad() does not warn on very small pad numbers). (Ilia) - Fixed bug #43457 (Prepared statement with incorrect parms doens't http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/cgi_main.c?r1=1.267.2.15.2.52&r2=1.267.2.15.2.53&diff_format=u Index: php-src/sapi/cgi/cgi_main.c diff -u php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.52 php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.53 --- php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.52 Thu Nov 1 15:23:14 2007 +++ php-src/sapi/cgi/cgi_main.c Mon Dec 3 15:08:01 2007 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cgi_main.c,v 1.267.2.15.2.52 2007/11/01 15:23:14 dmitry Exp $ */ +/* $Id: cgi_main.c,v 1.267.2.15.2.53 2007/12/03 15:08:01 dmitry Exp $ */ #include "php.h" #include "php_globals.h" @@ -1661,12 +1661,12 @@ } script_file = estrdup(php_optarg); no_headers = 1; - /* arguments after the file are considered script args */ - SG(request_info).argc = argc - (php_optind - 1); - SG(request_info).argv = &argv[php_optind - 1]; break; case 'i': /* php info & quit */ + if (script_file) { + efree(script_file); + } if (php_request_startup(TSRMLS_C) == FAILURE) { SG(server_context) = NULL; php_module_shutdown(TSRMLS_C); @@ -1687,6 +1687,9 @@ break; case 'm': /* list compiled in modules */ + if (script_file) { + efree(script_file); + } php_output_startup(); php_output_activate(TSRMLS_C); SG(headers_sent) = 1; @@ -1710,6 +1713,9 @@ break; case 'v': /* show php version & quit */ + if (script_file) { + efree(script_file); + } no_headers = 1; if (php_request_startup(TSRMLS_C) == FAILURE) { SG(server_context) = NULL; @@ -1746,6 +1752,18 @@ /* override path_translated if -f on command line */ STR_FREE(SG(request_info).path_translated); SG(request_info).path_translated = script_file; + /* before registering argv to module exchange the *new* argv[0] */ + /* we can achieve this without allocating more memory */ + SG(request_info).argc = argc - (php_optind - 1); + SG(request_info).argv = &argv[php_optind - 1]; + SG(request_info).argv[0] = script_file; + } else if (argc > php_optind) { + /* file is on command line, but not in -f opt */ + STR_FREE(SG(request_info).path_translated); + SG(request_info).path_translated = estrdup(argv[php_optind++]); + /* arguments after the file are considered script args */ + SG(request_info).argc = argc - php_optind; + SG(request_info).argv = &argv[php_optind]; } if (no_headers) { @@ -1753,14 +1771,6 @@ SG(request_info).no_headers = 1; } - if (!SG(request_info).path_translated && argc > php_optind) { - /* arguments after the file are considered script args */ - SG(request_info).argc = argc - php_optind; - SG(request_info).argv = &argv[php_optind]; - /* file is on command line, but not in -f opt */ - SG(request_info).path_translated = estrdup(argv[php_optind++]); - } - /* all remaining arguments are part of the query string this section of code concatenates all remaining arguments into a single string, seperating args with a &
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php