summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Le Blanc <lbarnaud@php.net>2008-07-24 09:11:48 +0000
committerArnaud Le Blanc <lbarnaud@php.net>2008-07-24 09:11:48 +0000
commit6688c798e19a952841dc0090028133469252856f (patch)
treef393f8da199facb2ed76fe7af15a95beb7fcf025
parent64a04a58a6c8b67e8fef54b420ce6d36692efa64 (diff)
downloadphp-git-6688c798e19a952841dc0090028133469252856f.tar.gz
Allow filters to work on INPUT_SERVER in CLI (bug #44779)
-rw-r--r--ext/filter/tests/bug44779.phpt8
-rw-r--r--sapi/cli/php_cli.c26
2 files changed, 29 insertions, 5 deletions
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--
+<?php
+var_dump(filter_input(INPUT_SERVER, "PHP_SELF"));
+?>
+--EXPECTF--
+%unicode|string%(%d) "%s"
diff --git a/sapi/cli/php_cli.c b/sapi/cli/php_cli.c
index 969d7adcc7..d24b81afd3 100644
--- a/sapi/cli/php_cli.c
+++ b/sapi/cli/php_cli.c
@@ -296,19 +296,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);
+ }
}
/* }}} */