]> granicus.if.org Git - php/commitdiff
Unicode support: fixed GLOBALS protection
authorDmitry Stogov <dmitry@php.net>
Wed, 22 Feb 2006 13:10:32 +0000 (13:10 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 22 Feb 2006 13:10:32 +0000 (13:10 +0000)
ext/standard/array.c
ext/standard/basic_functions.c

index 62ab109ea32518d9a9074608d98cce8e342ec6c5..38a16316d0a99c6380c94d57f2482f904b413886 100644 (file)
@@ -1438,8 +1438,9 @@ PHP_FUNCTION(extract)
                                /* break omitted intentionally */
 
                        case EXTR_OVERWRITE:
-                               /* FIXME: Unicode support??? */
-                               if (var_exists && !strcmp(var_name.s, "GLOBALS")) {
+                               if (var_exists && 
+                                       var_name_len == sizeof("GLOBALS") &&
+                                   ZEND_U_EQUAL(key_type, var_name, var_name_len-1, "GLOBALS", sizeof("GLOBALS")-1)) {
                                        break;
                                }
                        
index 577f5a10ad4684ec0dfcdc666b7e88f619a303ee..a065c9b8303cd046cfa8b0ba199ba563bc42cd7a 100644 (file)
@@ -3179,8 +3179,8 @@ static int copy_request_variable(void *pDest, int num_args, va_list args, zend_h
                if (!hash_key->nKeyLength) {
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Numeric key detected - possible security hazard.");
                        return 0;
-               /* FIXME: Unicode support??? */
-               } else if (!strcmp(hash_key->arKey.s, "GLOBALS")) {
+               } else if (hash_key->nKeyLength == sizeof("GLOBALS") &&
+                          ZEND_U_EQUAL(hash_key->type, hash_key->arKey, hash_key->nKeyLength-1, "GLOBALS", sizeof("GLOBALS")-1)) {
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempted GLOBALS variable overwrite.");
                        return 0; 
                }