From: Arnaud Le Blanc Date: Thu, 24 Jul 2008 09:12:45 +0000 (+0000) Subject: MFH: Allow filters to work on INPUT_SERVER in CLI (bug #44779) X-Git-Tag: php-5.3.0alpha1~165 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=aa31988e43bc350d935a555ea2a5beabdb119245;p=php MFH: Allow filters to work on INPUT_SERVER in CLI (bug #44779) --- diff --git a/NEWS b/NEWS index b32372786a..4bf5083779 100644 --- a/NEWS +++ b/NEWS @@ -229,6 +229,7 @@ PHP NEWS - Fixed bug #44849 (imagecolorclosesthwb() is not available on Windows). (Kalle) - Fixed bug #44805 (rename() function is not portable to Windows). (Pierre) +- Fixed bug #44779 (filter returns NULL in CLI when it shouldn't). (Arnaud) - Fixed bug #44742 (timezone_offset_get() causes segmentation faults). (Derick) - Fixed bug #44648 (Attribute names not checked for wellformedness). (Rob) - Fixed bug #44414 (Incomplete reporting about abstract methods). (Dmitry) diff --git a/ext/filter/tests/bug44779.phpt b/ext/filter/tests/bug44779.phpt new file mode 100644 index 0000000000..33a4fe4ffb --- /dev/null +++ b/ext/filter/tests/bug44779.phpt @@ -0,0 +1,8 @@ +--TEST-- +Bug #44779 (filter returns NULL in CLI when it shouldn't) +--FILE-- + +--EXPECTF-- +%unicode|string%(%d) "%s" diff --git a/sapi/cli/php_cli.c b/sapi/cli/php_cli.c index 68e2af3589..eb2aa8f27a 100644 --- a/sapi/cli/php_cli.c +++ b/sapi/cli/php_cli.c @@ -292,19 +292,35 @@ static char *script_filename = ""; static void sapi_cli_register_variables(zval *track_vars_array TSRMLS_DC) /* {{{ */ { + size_t len; + char *docroot = ""; + /* In CGI mode, we consider the environment to be a part of the server * variables */ php_import_environment_variables(track_vars_array TSRMLS_CC); /* Build the special-case PHP_SELF variable for the CLI version */ - php_register_variable("PHP_SELF", php_self, track_vars_array TSRMLS_CC); - php_register_variable("SCRIPT_NAME", php_self, track_vars_array TSRMLS_CC); + len = strlen(php_self); + if (sapi_module.input_filter(PARSE_SERVER, "PHP_SELF", &php_self, len, &len TSRMLS_CC)) { + php_register_variable("PHP_SELF", php_self, track_vars_array TSRMLS_CC); + } + if (sapi_module.input_filter(PARSE_SERVER, "SCRIPT_NAME", &php_self, len, &len TSRMLS_CC)) { + php_register_variable("SCRIPT_NAME", php_self, track_vars_array TSRMLS_CC); + } /* filenames are empty for stdin */ - php_register_variable("SCRIPT_FILENAME", script_filename, track_vars_array TSRMLS_CC); - php_register_variable("PATH_TRANSLATED", script_filename, track_vars_array TSRMLS_CC); + len = strlen(script_filename); + if (sapi_module.input_filter(PARSE_SERVER, "SCRIPT_FILENAME", &script_filename, len, &len TSRMLS_CC)) { + php_register_variable("SCRIPT_FILENAME", script_filename, track_vars_array TSRMLS_CC); + } + if (sapi_module.input_filter(PARSE_SERVER, "PATH_TRANSLATED", &script_filename, len, &len TSRMLS_CC)) { + php_register_variable("PATH_TRANSLATED", script_filename, track_vars_array TSRMLS_CC); + } /* just make it available */ - php_register_variable("DOCUMENT_ROOT", "", track_vars_array TSRMLS_CC); + len = 0U; + if (sapi_module.input_filter(PARSE_SERVER, "DOCUMENT_ROOT", &docroot, len, &len TSRMLS_CC)) { + php_register_variable("DOCUMENT_ROOT", docroot, track_vars_array TSRMLS_CC); + } } /* }}} */