[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

2006-12-26 Thread Dmitry Stogov
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

2006-10-17 Thread Ilia Alshanetsky
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

2006-09-12 Thread Derick Rethans
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