On Thu, 31 Aug 2006, Antony Dovgal wrote:

> tony2001              Thu Aug 31 22:11:35 2006 UTC
> 
>   Modified files:              
>     /php-src/ext/filter       filter.c 
>   Log:
>   change filters to operate on the copy of data, so multiple filters an be 
> applied one after another

It was this patch that broke the default filter for the request 
parameters. Didn't manage to figure out yet how to best fix it though.

regards,
Derick

> http://cvs.php.net/viewvc.cgi/php-src/ext/filter/filter.c?r1=1.65&r2=1.66&diff_format=u
> Index: php-src/ext/filter/filter.c
> diff -u php-src/ext/filter/filter.c:1.65 php-src/ext/filter/filter.c:1.66
> --- php-src/ext/filter/filter.c:1.65  Thu Aug 31 15:17:08 2006
> +++ php-src/ext/filter/filter.c       Thu Aug 31 22:11:35 2006
> @@ -18,7 +18,7 @@
>    +----------------------------------------------------------------------+
>  */
>  
> -/* $Id: filter.c,v 1.65 2006/08/31 15:17:08 tony2001 Exp $ */
> +/* $Id: filter.c,v 1.66 2006/08/31 22:11:35 tony2001 Exp $ */
>  
>  #ifdef HAVE_CONFIG_H
>  #include "config.h"
> @@ -274,7 +274,7 @@
>  {
>       php_info_print_table_start();
>       php_info_print_table_row( 2, "Input Validation and Filtering", 
> "enabled" );
> -     php_info_print_table_row( 2, "Revision", "$Revision: 1.65 $");
> +     php_info_print_table_row( 2, "Revision", "$Revision: 1.66 $");
>       php_info_print_table_end();
>  
>       DISPLAY_INI_ENTRIES();
> @@ -301,7 +301,7 @@
>  }
>  /* }}} */
>  
> -static void php_zval_filter(zval *value, long filter, long flags, zval 
> *options, char* charset TSRMLS_DC) /* {{{ */
> +static void php_zval_filter(zval **value, long filter, long flags, zval 
> *options, char* charset TSRMLS_DC) /* {{{ */
>  {
>       filter_list_entry  filter_func;
>  
> @@ -312,10 +312,11 @@
>               filter_func = php_find_filter(FILTER_DEFAULT);
>       }
>  
> +     SEPARATE_ZVAL(value);
>       /* Here be strings */
> -     convert_to_string(value);
> +     convert_to_string(*value);
>  
> -     filter_func.function(value, flags, options, charset TSRMLS_CC);
> +     filter_func.function(*value, flags, options, charset TSRMLS_CC);
>  }
>  /* }}} */
>  
> @@ -376,8 +377,10 @@
>               Z_TYPE(new_var) = IS_STRING;
>  
>               if (!(IF_G(default_filter) == FILTER_UNSAFE_RAW)) {
> +                     zval *tmp_new_var = &new_var;
>                       Z_STRVAL(new_var) = estrndup(*val, val_len);
> -                     php_zval_filter(&new_var, IF_G(default_filter), 
> IF_G(default_filter_flags), NULL, NULL/*charset*/ TSRMLS_CC);
> +                     INIT_PZVAL(tmp_new_var);
> +                     php_zval_filter(&tmp_new_var, IF_G(default_filter), 
> IF_G(default_filter_flags), NULL, NULL/*charset*/ TSRMLS_CC);
>               }
>  #if PHP_VERSION_ID<60000
>               else if (PG(magic_quotes_gpc)) {
> @@ -415,16 +418,16 @@
>  }
>  /* }}} */
>  
> -static void php_zval_filter_recursive(zval *value, long filter, long flags, 
> zval *options, char *charset TSRMLS_DC) /* {{{ */
> +static void php_zval_filter_recursive(zval **value, long filter, long flags, 
> zval *options, char *charset TSRMLS_DC) /* {{{ */
>  {
>       zval **element;
>       HashPosition pos;
>  
> -     if (Z_TYPE_P(value) == IS_ARRAY) {
> -             for (zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(value), 
> &pos);
> -                      zend_hash_get_current_data_ex(Z_ARRVAL_P(value), (void 
> **) &element, &pos) == SUCCESS;
> -                      zend_hash_move_forward_ex(Z_ARRVAL_P(value), &pos)) {
> -                             php_zval_filter_recursive(*element, filter, 
> flags, options, charset TSRMLS_CC);
> +     if (Z_TYPE_PP(value) == IS_ARRAY) {
> +             for (zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(value), 
> &pos);
> +                      zend_hash_get_current_data_ex(Z_ARRVAL_PP(value), 
> (void **) &element, &pos) == SUCCESS;
> +                      zend_hash_move_forward_ex(Z_ARRVAL_PP(value), &pos)) {
> +                             php_zval_filter_recursive(element, filter, 
> flags, options, charset TSRMLS_CC);
>               }
>       } else {
>               php_zval_filter(value, filter, flags, options, charset 
> TSRMLS_CC);
> @@ -632,7 +635,7 @@
>  
>       if (found) {
>               zval_copy_ctor(return_value);  /* Watch out for empty strings */
> -             php_zval_filter_recursive(return_value, filter, filter_flags, 
> options, charset TSRMLS_CC);
> +             php_zval_filter_recursive(&return_value, filter, filter_flags, 
> options, charset TSRMLS_CC);
>       } else {
>               RETURN_NULL();
>       }
> @@ -779,7 +782,7 @@
>                       }
>  
>                       if (filter_flags & FILTER_FLAG_ARRAY) {
> -                             php_zval_filter_recursive(*tmp, filter, 
> filter_flags, options, charset TSRMLS_CC);
> +                             php_zval_filter_recursive(tmp, filter, 
> filter_flags, options, charset TSRMLS_CC);
>  
>                               /* ARRAY always returns an array */
>                               if (Z_TYPE_PP(tmp) != IS_ARRAY) {
> @@ -789,7 +792,7 @@
>                                       *tmp = temparray;
>                               }
>                       } else {
> -                             php_zval_filter(*tmp, filter, filter_flags, 
> options, charset TSRMLS_CC);
> +                             php_zval_filter(tmp, filter, filter_flags, 
> options, charset TSRMLS_CC);
>                       }
>                       zval_add_ref(tmp);
>                       add_assoc_zval(return_value, key, *tmp);
> @@ -883,7 +886,7 @@
>                       }
>               }
>       }
> -     php_zval_filter_recursive(var, filter, filter_flags, options, charset 
> TSRMLS_CC);
> +     php_zval_filter_recursive(&var, filter, filter_flags, options, charset 
> TSRMLS_CC);
>       RETURN_ZVAL(var, 1, 0);
>  }
>  /* }}} */
> 
> 

-- 
Derick Rethans
http://derickrethans.nl | http://ez.no | http://xdebug.org

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

Reply via email to