]> granicus.if.org Git - php/commitdiff
Fixed bug #44720 (Prevent infinite recursion within session_register)
authorScott MacVicar <scottmac@php.net>
Tue, 15 Apr 2008 00:59:04 +0000 (00:59 +0000)
committerScott MacVicar <scottmac@php.net>
Tue, 15 Apr 2008 00:59:04 +0000 (00:59 +0000)
ext/session/session.c

index 65ac1c29b8e000d186e145ae96ad25b9cfae0f8a..f24123789521d46e2e771f317e8845bd823074dc 100644 (file)
@@ -1655,12 +1655,19 @@ static void php_register_var(zval** entry TSRMLS_DC)
        zval **value;
        
        if (Z_TYPE_PP(entry) == IS_ARRAY) {
+               if (Z_ARRVAL_PP(entry)->nApplyCount > 1) {
+                       return;
+               }
+
                zend_hash_internal_pointer_reset(Z_ARRVAL_PP(entry));
+               Z_ARRVAL_PP(entry)->nApplyCount++;
 
                while (zend_hash_get_current_data(Z_ARRVAL_PP(entry), (void**)&value) == SUCCESS) {
                        php_register_var(value TSRMLS_CC);
                        zend_hash_move_forward(Z_ARRVAL_PP(entry));
                }
+
+               Z_ARRVAL_PP(entry)->nApplyCount--;
        } else {
                convert_to_string_ex(entry);