tony2001                Tue Mar  6 19:59:13 2007 UTC

  Modified files:              
    /php-src/ext/standard       basic_functions.c 
    /php-src/ext/standard/tests/general_functions       import_request.phpt 
  Log:
  fix segfault in import_request_variables() and its test
  I'm not completely sure it's correct to import numeric vars like _POST["1"] 
etc.
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.c?r1=1.850&r2=1.851&diff_format=u
Index: php-src/ext/standard/basic_functions.c
diff -u php-src/ext/standard/basic_functions.c:1.850 
php-src/ext/standard/basic_functions.c:1.851
--- php-src/ext/standard/basic_functions.c:1.850        Sat Mar  3 20:41:12 2007
+++ php-src/ext/standard/basic_functions.c      Tue Mar  6 19:59:13 2007
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: basic_functions.c,v 1.850 2007/03/03 20:41:12 helly Exp $ */
+/* $Id: basic_functions.c,v 1.851 2007/03/06 19:59:13 tony2001 Exp $ */
 
 #include "php.h"
 #include "php_streams.h"
@@ -6363,9 +6363,15 @@
                return;
        }
 
-       convert_to_text(prefix);
-       if (Z_UNILEN_P(prefix) == 0) {
-               php_error_docref(NULL TSRMLS_CC, E_NOTICE, "No prefix specified 
- possible security hazard");
+       if (ZEND_NUM_ARGS() > 1) {
+               convert_to_text(prefix);
+
+               if (Z_UNILEN_P(prefix) == 0) {
+                       php_error_docref(NULL TSRMLS_CC, E_NOTICE, "No prefix 
specified - possible security hazard");
+               }
+       } else {
+               MAKE_STD_ZVAL(prefix);
+               ZVAL_EMPTY_TEXT(prefix);
        }
 
        for (p = types; p && *p; p++) {
@@ -6388,6 +6394,10 @@
                                break;
                }
        }
+
+       if (ZEND_NUM_ARGS() < 2) {
+               zval_ptr_dtor(&prefix);
+       }
 }
 /* }}} */
 
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/general_functions/import_request.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/standard/tests/general_functions/import_request.phpt
diff -u php-src/ext/standard/tests/general_functions/import_request.phpt:1.1 
php-src/ext/standard/tests/general_functions/import_request.phpt:1.2
--- php-src/ext/standard/tests/general_functions/import_request.phpt:1.1        
Thu Nov 16 13:00:03 2006
+++ php-src/ext/standard/tests/general_functions/import_request.phpt    Tue Mar 
 6 19:59:13 2007
@@ -26,10 +26,8 @@
 echo "Done\n";
 ?>
 --EXPECTF--    
-Warning: Wrong parameter count for import_request_variables() in %s on line %d
+Warning: import_request_variables() expects at least 1 parameter, 0 given in 
%s on line %d
 NULL
-
-Notice: import_request_variables(): No prefix specified - possible security 
hazard in %s on line %d
 NULL
 
 Notice: import_request_variables(): No prefix specified - possible security 
hazard in %s on line %d
@@ -37,9 +35,9 @@
 
 Notice: import_request_variables(): No prefix specified - possible security 
hazard in %s on line %d
 
-Warning: import_request_variables(): Attempted GLOBALS variable overwrite. in 
%s on line %d
+Warning: import_request_variables(): Attempted GLOBALS variable overwrite in 
%s on line %d
 
-Warning: import_request_variables(): Numeric key detected - possible security 
hazard. in %s on line %d
+Warning: import_request_variables(): Numeric key detected - possible security 
hazard in %s on line %d
 NULL
 
 Notice: Undefined variable: ap in %s on line %d
@@ -50,13 +48,11 @@
 NULL
 
 Notice: Undefined variable: g_ap in %s on line %d
-
-Notice: Undefined variable: g_1 in %s on line %d
 string(1) "1"
 string(3) "heh"
 string(1) "3"
 NULL
-NULL
+string(2) "hm"
 NULL
 string(1) "1"
 string(3) "heh"
@@ -76,3 +72,50 @@
 string(1) "3"
 NULL
 Done
+--UEXPECTF--
+Warning: import_request_variables() expects at least 1 parameter, 0 given in 
%s on line %d
+NULL
+NULL
+
+Notice: import_request_variables(): No prefix specified - possible security 
hazard in %s on line %d
+NULL
+
+Notice: import_request_variables(): No prefix specified - possible security 
hazard in %s on line %d
+
+Warning: import_request_variables(): Attempted GLOBALS variable overwrite in 
%s on line %d
+
+Warning: import_request_variables(): Numeric key detected - possible security 
hazard in %s on line %d
+NULL
+
+Notice: Undefined variable: ap in %s on line %d
+unicode(1) "1"
+unicode(3) "heh"
+unicode(1) "3"
+NULL
+NULL
+
+Notice: Undefined variable: g_ap in %s on line %d
+unicode(1) "1"
+unicode(3) "heh"
+unicode(1) "3"
+NULL
+unicode(2) "hm"
+NULL
+unicode(1) "1"
+unicode(3) "heh"
+unicode(1) "3"
+unicode(2) "25"
+unicode(4) "test"
+unicode(5) "blah3"
+array(1) {
+  [0]=>
+  unicode(2) "ar"
+}
+NULL
+
+Notice: Undefined variable: r_ap in %s on line %d
+unicode(1) "1"
+unicode(3) "heh"
+unicode(1) "3"
+NULL
+Done

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to