[PHP-CVS] cvs: php-src(PHP_5_2) /ext/filter filter.c filter_private.h logical_filters.c /ext/filter/tests 030.phpt 045.phpt 046.phpt 047.phpt 048.phpt 049.phpt 050.phpt 051.phpt bug7733.phpt
dmitry Tue Dec 26 09:16:25 2006 UTC Added files: (Branch: PHP_5_2) /php-src/ext/filter/tests 045.phpt 046.phpt 047.phpt 048.phpt 049.phpt 050.phpt 051.phpt Modified files: /php-src/ext/filter filter.c filter_private.h logical_filters.c /php-src/ext/filter/tests 030.phpt bug7733.phpt Log: Code review: . fixed integer overflow . fixed buffer overflow/underflow . added more strict IP validation . reimplemented float number validation http://cvs.php.net/viewvc.cgi/php-src/ext/filter/filter.c?r1=1.52.2.36r2=1.52.2.37diff_format=u Index: php-src/ext/filter/filter.c diff -u php-src/ext/filter/filter.c:1.52.2.36 php-src/ext/filter/filter.c:1.52.2.37 --- php-src/ext/filter/filter.c:1.52.2.36 Sat Dec 9 14:14:29 2006 +++ php-src/ext/filter/filter.c Tue Dec 26 09:16:24 2006 @@ -19,7 +19,7 @@ +--+ */ -/* $Id: filter.c,v 1.52.2.36 2006/12/09 14:14:29 iliaa Exp $ */ +/* $Id: filter.c,v 1.52.2.37 2006/12/26 09:16:24 dmitry Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -275,7 +275,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.52.2.36 $); + php_info_print_table_row( 2, Revision, $Revision: 1.52.2.37 $); php_info_print_table_end(); DISPLAY_INI_ENTRIES(); @@ -331,6 +331,7 @@ if (zend_hash_find(HASH_OF(options), default, sizeof(default), (void **)tmp) == SUCCESS) { **value = **tmp; zval_copy_ctor(*value); + INIT_PZVAL(*value); } } } @@ -518,7 +519,6 @@ longarg; char *var; int var_len; - zval **tmp; zval *array_ptr = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ls, arg, var, var_len) == FAILURE) { @@ -527,7 +527,7 @@ array_ptr = php_filter_get_storage(arg TSRMLS_CC); - if (array_ptr HASH_OF(array_ptr) zend_hash_find(HASH_OF(array_ptr), var, var_len + 1, (void **)tmp) == SUCCESS) { + if (array_ptr HASH_OF(array_ptr) zend_hash_exists(HASH_OF(array_ptr), var, var_len + 1)) { RETURN_TRUE; } @@ -542,22 +542,27 @@ char *charset = NULL; if (filter_args Z_TYPE_PP(filter_args) != IS_ARRAY) { - convert_to_long_ex(filter_args); + long lval; + + PHP_FILTER_GET_LONG_OPT(filter_args, lval); + if (filter != -1) { /* handler for array apply */ /* filter_args is the filter_flags */ - filter_flags = Z_LVAL_PP(filter_args); + filter_flags = lval; + + if (!(filter_flags FILTER_REQUIRE_ARRAY || filter_flags FILTER_FORCE_ARRAY)) { + filter_flags |= FILTER_REQUIRE_SCALAR; + } } else { - filter = Z_LVAL_PP(filter_args); + filter = lval; } } else if (filter_args) { if (zend_hash_find(HASH_OF(*filter_args), filter, sizeof(filter), (void **)option) == SUCCESS) { - convert_to_long(*option); - filter = Z_LVAL_PP(option); + PHP_FILTER_GET_LONG_OPT(option, filter); } if (zend_hash_find(HASH_OF(*filter_args), flags, sizeof(flags), (void **)option) == SUCCESS) { - convert_to_long(*option); - filter_flags = Z_LVAL_PP(option); + PHP_FILTER_GET_LONG_OPT(option, filter_flags); if (!(filter_flags FILTER_REQUIRE_ARRAY || filter_flags FILTER_FORCE_ARRAY)) { filter_flags |= FILTER_REQUIRE_SCALAR; @@ -708,14 +713,15 @@ if (Z_TYPE_PP(filter_args) == IS_LONG) { filter_flags = Z_LVAL_PP(filter_args); } else if (Z_TYPE_PP(filter_args) == IS_ARRAY zend_hash_find(HASH_OF(*filter_args), flags, sizeof(flags), (void **)option) == SUCCESS) { - convert_to_long(*option); - filter_flags = Z_LVAL_PP(option); + PHP_FILTER_GET_LONG_OPT(option, filter_flags); } else if (Z_TYPE_PP(filter_args) == IS_ARRAY zend_hash_find(HASH_OF(*filter_args), options, sizeof(options), (void **)opt) == SUCCESS + Z_TYPE_PP(opt) == IS_ARRAY zend_hash_find(HASH_OF(*opt), default, sizeof(default), (void **)def) == SUCCESS
[PHP-CVS] cvs: php-src(PHP_5_2) /ext/filter filter.c filter_private.h logical_filters.c /ext/filter/tests 010.phpt 012.phpt 013.phpt 014.phpt 015.phpt 016.phpt 017.phpt 018.phpt 019.phpt 030.phpt 031
iliaa Tue Oct 17 15:26:14 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/filter filter.c filter_private.h logical_filters.c /php-src/ext/filter/tests 010.phpt 012.phpt 013.phpt 014.phpt 015.phpt 016.phpt 017.phpt 018.phpt 019.phpt 030.phpt 031.phpt 034.phpt bug8315.phpt filter_data.phpt Log: Unify handling of return values on validation failure and var not found http://cvs.php.net/viewvc.cgi/php-src/ext/filter/filter.c?r1=1.52.2.24r2=1.52.2.25diff_format=u Index: php-src/ext/filter/filter.c diff -u php-src/ext/filter/filter.c:1.52.2.24 php-src/ext/filter/filter.c:1.52.2.25 --- php-src/ext/filter/filter.c:1.52.2.24 Mon Oct 9 19:48:13 2006 +++ php-src/ext/filter/filter.c Tue Oct 17 15:26:14 2006 @@ -19,7 +19,7 @@ +--+ */ -/* $Id: filter.c,v 1.52.2.24 2006/10/09 19:48:13 iliaa Exp $ */ +/* $Id: filter.c,v 1.52.2.25 2006/10/17 15:26:14 iliaa Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -182,6 +182,7 @@ REGISTER_LONG_CONSTANT(FILTER_REQUIRE_SCALAR, FILTER_REQUIRE_SCALAR, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT(FILTER_REQUIRE_ARRAY, FILTER_REQUIRE_ARRAY, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT(FILTER_FORCE_ARRAY, FILTER_FORCE_ARRAY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT(FILTER_NULL_ON_FAILURE, FILTER_NULL_ON_FAILURE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT(FILTER_VALIDATE_INT, FILTER_VALIDATE_INT, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT(FILTER_VALIDATE_BOOLEAN, FILTER_VALIDATE_BOOLEAN, CONST_CS | CONST_PERSISTENT); @@ -274,7 +275,7 @@ { php_info_print_table_start(); php_info_print_table_header( 2, Input Validation and Filtering, enabled ); - php_info_print_table_row( 2, Revision, $Revision: 1.52.2.24 $); + php_info_print_table_row( 2, Revision, $Revision: 1.52.2.25 $); php_info_print_table_end(); DISPLAY_INI_ENTRIES(); @@ -557,7 +558,11 @@ SEPARATE_ZVAL(filtered); } zval_dtor(*filtered); - ZVAL_FALSE(*filtered); + if (filter_flags FILTER_NULL_ON_FAILURE) { + ZVAL_NULL(*filtered); + } else { + ZVAL_FALSE(*filtered); + } return; } php_zval_filter_recursive(filtered, filter, filter_flags, options, charset, copy TSRMLS_CC); @@ -568,7 +573,11 @@ SEPARATE_ZVAL(filtered); } zval_dtor(*filtered); - ZVAL_FALSE(*filtered); + if (filter_flags FILTER_NULL_ON_FAILURE) { + ZVAL_NULL(*filtered); + } else { + ZVAL_FALSE(*filtered); + } return; } @@ -650,13 +659,27 @@ int var_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ls|lZ, fetch_from, var, var_len, filter, filter_args) == FAILURE) { - RETURN_FALSE; + return; } input = php_filter_get_storage(fetch_from TSRMLS_CC); if (!input || !HASH_OF(input) || zend_hash_find(HASH_OF(input), var, var_len + 1, (void **)tmp) != SUCCESS) { - RETURN_FALSE; + long filter_flags = 0; + zval **option; + if (filter_args) { + if (Z_TYPE_PP(filter_args) == IS_LONG) { + filter_flags = Z_LVAL_PP(filter_args); + } else if (Z_TYPE_PP(filter_args) == IS_ARRAY zend_hash_find(HASH_OF(*filter_args), flags, sizeof(flags), (void **)option) == SUCCESS) { + convert_to_long(*option); + filter_flags = Z_LVAL_PP(option); + } + } + if (filter_flags FILTER_NULL_ON_FAILURE) { + RETURN_FALSE; + } else { + RETURN_NULL(); + } } *return_value = **tmp; @@ -675,7 +698,7 @@ zval **filter_args = NULL, *data; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, z/|lZ, data, filter, filter_args) == FAILURE) { - RETURN_FALSE; + return; } *return_value = *data; @@ -694,13 +717,27 @@ zval *array_input = NULL, **op = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, l|Z, fetch_from, op) == FAILURE) { - RETURN_FALSE; + return; } array_input = php_filter_get_storage(fetch_from TSRMLS_CC); if
[PHP-CVS] cvs: php-src(PHP_5_2) /ext/filter filter.c filter_private.h
derick Tue Sep 12 16:10:33 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/filter filter.c filter_private.h Log: - Make passing filter flags as LONG work again. - Make super globals filtering work again (as quick workaround). #- Will merge to head later... need to get things sorted out first. http://cvs.php.net/viewvc.cgi/php-src/ext/filter/filter.c?r1=1.52.2.14r2=1.52.2.15diff_format=u Index: php-src/ext/filter/filter.c diff -u php-src/ext/filter/filter.c:1.52.2.14 php-src/ext/filter/filter.c:1.52.2.15 --- php-src/ext/filter/filter.c:1.52.2.14 Thu Aug 31 22:34:32 2006 +++ php-src/ext/filter/filter.c Tue Sep 12 16:10:33 2006 @@ -18,7 +18,7 @@ +--+ */ -/* $Id: filter.c,v 1.52.2.14 2006/08/31 22:34:32 pajoye Exp $ */ +/* $Id: filter.c,v 1.52.2.15 2006/09/12 16:10:33 derick 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.52.2.14 $); + php_info_print_table_row( 2, Revision, $Revision: 1.52.2.15 $); php_info_print_table_end(); DISPLAY_INI_ENTRIES(); @@ -312,7 +312,7 @@ filter_func = php_find_filter(FILTER_DEFAULT); } - SEPARATE_ZVAL(value); + /* Comment this out until there is a better solution: SEPARATE_ZVAL(value); */ /* Here be strings */ convert_to_string(*value); @@ -634,7 +634,7 @@ break; } } else { - filter_flags = FILTER_FLAG_SCALAR; + filter_flags = filter_flags | FILTER_FLAG_SCALAR; } zval_copy_ctor(return_value); /* Watch out for empty strings */ http://cvs.php.net/viewvc.cgi/php-src/ext/filter/filter_private.h?r1=1.12.2.2r2=1.12.2.3diff_format=u Index: php-src/ext/filter/filter_private.h diff -u php-src/ext/filter/filter_private.h:1.12.2.2 php-src/ext/filter/filter_private.h:1.12.2.3 --- php-src/ext/filter/filter_private.h:1.12.2.2Thu Aug 31 22:34:32 2006 +++ php-src/ext/filter/filter_private.h Tue Sep 12 16:10:33 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: filter_private.h,v 1.12.2.2 2006/08/31 22:34:32 pajoye Exp $ */ +/* $Id: filter_private.h,v 1.12.2.3 2006/09/12 16:10:33 derick Exp $ */ #ifndef FILTER_PRIVATE_H #define FILTER_PRIVATE_H @@ -24,7 +24,7 @@ #define FILTER_FLAG_NONE0x #define FILTER_FLAG_ARRAY 0x100 -#define FILTER_FLAG_SCALAR 0x200 +#define FILTER_FLAG_SCALAR 0x200 #define FILTER_FLAG_ALLOW_OCTAL 0x0001 #define FILTER_FLAG_ALLOW_HEX 0x0002 -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php