]> granicus.if.org Git - php/commitdiff
MFH: Allow filters to work on INPUT_SERVER in CLI (bug #44779)
authorArnaud Le Blanc <lbarnaud@php.net>
Thu, 24 Jul 2008 09:12:45 +0000 (09:12 +0000)
committerArnaud Le Blanc <lbarnaud@php.net>
Thu, 24 Jul 2008 09:12:45 +0000 (09:12 +0000)
NEWS
ext/filter/tests/bug44779.phpt [new file with mode: 0644]
sapi/cli/php_cli.c

diff --git a/NEWS b/NEWS
index b32372786a52d834e7151a79341f0f7ca8c81f8b..4bf5083779b4a7ea8c0ac6d38274f329ba869112 100644 (file)
--- 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 (file)
index 0000000..33a4fe4
--- /dev/null
@@ -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"
index 68e2af3589464f308a1c8cff470f19293285fc90..eb2aa8f27adfe07a2f9b6200ece01dd26bbdfd50 100644 (file)
@@ -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);
+       }
 }
 /* }}} */