From c5d68cd1df904a0eb97d3f7ed25c53caff9ee8f1 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Tue, 17 Oct 2006 15:26:14 +0000 Subject: [PATCH] Unify handling of return values on validation failure and var not found --- ext/filter/filter.c | 53 ++++++++++++--- ext/filter/filter_private.h | 1 + ext/filter/logical_filters.c | 106 ++++++++++++------------------ ext/filter/tests/010.phpt | 16 ++--- ext/filter/tests/012.phpt | 6 +- ext/filter/tests/013.phpt | 32 ++++----- ext/filter/tests/014.phpt | 8 +-- ext/filter/tests/015.phpt | 14 ++-- ext/filter/tests/016.phpt | 12 ++-- ext/filter/tests/017.phpt | 8 +-- ext/filter/tests/018.phpt | 20 +++--- ext/filter/tests/019.phpt | 10 +-- ext/filter/tests/030.phpt | 2 +- ext/filter/tests/031.phpt | 6 +- ext/filter/tests/034.phpt | 4 +- ext/filter/tests/bug8315.phpt | 6 +- ext/filter/tests/filter_data.phpt | 8 +-- 17 files changed, 164 insertions(+), 148 deletions(-) diff --git a/ext/filter/filter.c b/ext/filter/filter.c index 95f1cce5305b0..ab3070849d2fa 100644 --- a/ext/filter/filter.c +++ b/ext/filter/filter.c @@ -182,6 +182,7 @@ PHP_MINIT_FUNCTION(filter) 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); @@ -557,7 +558,11 @@ static void php_filter_call(zval **filtered, long filter, zval **filter_args, co 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 @@ static void php_filter_call(zval **filtered, long filter, zval **filter_args, co 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 @@ PHP_FUNCTION(filter_input) 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 @@ PHP_FUNCTION(filter_var) 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 @@ PHP_FUNCTION(filter_input_array) 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 (!array_input || !HASH_OF(array_input)) { - RETURN_FALSE; + long filter_flags = 0; + zval **option; + if (op) { + if (Z_TYPE_PP(op) == IS_LONG) { + filter_flags = Z_LVAL_PP(op); + } else if (Z_TYPE_PP(op) == IS_ARRAY && zend_hash_find(HASH_OF(*op), "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(); + } } php_filter_array_handler(array_input, op, return_value TSRMLS_CC); @@ -715,7 +752,7 @@ PHP_FUNCTION(filter_var_array) zval *array_input = NULL, **op = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|Z", &array_input, &op) == FAILURE) { - RETURN_FALSE; + return; } php_filter_array_handler(array_input, op, return_value TSRMLS_CC); diff --git a/ext/filter/filter_private.h b/ext/filter/filter_private.h index 6adfe76615ae2..d782c2dfbf3a9 100644 --- a/ext/filter/filter_private.h +++ b/ext/filter/filter_private.h @@ -27,6 +27,7 @@ #define FILTER_REQUIRE_SCALAR 0x2000000 #define FILTER_FORCE_ARRAY 0x4000000 +#define FILTER_NULL_ON_FAILURE 0x8000000 #define FILTER_FLAG_ALLOW_OCTAL 0x0001 #define FILTER_FLAG_ALLOW_HEX 0x0002 diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c index 2489a2fe88167..3833861a94009 100644 --- a/ext/filter/logical_filters.c +++ b/ext/filter/logical_filters.c @@ -55,6 +55,15 @@ #define FORMAT_IPV4 4 #define FORMAT_IPV6 6 +#define RETURN_VALIDATION_FAILED \ + zval_dtor(value); \ + if (flags & FILTER_NULL_ON_FAILURE) { \ + ZVAL_NULL(value); \ + } else { \ + ZVAL_FALSE(value); \ + } \ + return; \ + static int php_filter_parse_int(const char *str, unsigned int str_len, long *ret TSRMLS_DC) { /* {{{ */ long ctx_value = 0; long sign = 1; @@ -176,9 +185,7 @@ void php_filter_int(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ len = Z_STRLEN_P(value); if (len == 0) { - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } if (option_flags & FILTER_FLAG_ALLOW_OCTAL) { @@ -216,8 +223,7 @@ void php_filter_int(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ } if (error > 0 || (min_range_set && (ctx_value < min_range)) || (max_range_set && (ctx_value > max_range))) { - zval_dtor(value); - ZVAL_NULL(value); + RETURN_VALIDATION_FAILED } else { zval_dtor(value); Z_TYPE_P(value) = IS_LONG; @@ -236,9 +242,7 @@ void php_filter_boolean(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ if (len>0) { PHP_FILTER_TRIM_DEFAULT(str, len, end); } else { - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } /* returns true for "1", "true", "on" and "yes" @@ -251,9 +255,15 @@ void php_filter_boolean(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ { zval_dtor(value); ZVAL_BOOL(value, 1); - } else { + } else if ((strncasecmp(str, "false", sizeof("false")) == 0) || + (strncasecmp(str, "no", sizeof("no")) == 0) || + (strncasecmp(str, "off", sizeof("off")) == 0) || + (strncmp(str, "0", sizeof("0")) == 0)) + { zval_dtor(value); ZVAL_BOOL(value, 0); + } else { + RETURN_VALIDATION_FAILED } } /* }}} */ @@ -285,9 +295,7 @@ void php_filter_float(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ len = Z_STRLEN_P(value); if (len < 1) { - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } str = Z_STRVAL_P(value); @@ -424,8 +432,7 @@ void php_filter_float(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ return; stateError: - zval_dtor(value); - ZVAL_NULL(value); + RETURN_VALIDATION_FAILED } /* }}} */ @@ -450,22 +457,18 @@ void php_filter_validate_regexp(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ if (!regexp_set) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "'regexp' option missing"); - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } re = pcre_get_compiled_regex(regexp, &pcre_extra, &preg_options TSRMLS_CC); if (!re) { - zval_dtor(value); - ZVAL_NULL(value); + RETURN_VALIDATION_FAILED } matches = pcre_exec(re, NULL, Z_STRVAL_P(value), Z_STRLEN_P(value), 0, 0, ovector, 3); /* 0 means that the vector is too small to hold all the captured substring offsets */ if (matches < 0) { - zval_dtor(value); - ZVAL_NULL(value); + RETURN_VALIDATION_FAILED } } /* }}} */ @@ -478,26 +481,17 @@ void php_filter_validate_url(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ url = php_url_parse_ex(Z_STRVAL_P(value), Z_STRLEN_P(value)); if (url == NULL) { - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } - if ((flags & FILTER_FLAG_SCHEME_REQUIRED) && url->scheme == NULL) { - zval_dtor(value); - ZVAL_NULL(value); - } - if ((flags & FILTER_FLAG_HOST_REQUIRED) && url->host == NULL) { - zval_dtor(value); - ZVAL_NULL(value); - } - if ((flags & FILTER_FLAG_PATH_REQUIRED) && url->path == NULL) { - zval_dtor(value); - ZVAL_NULL(value); - } - if ((flags & FILTER_FLAG_QUERY_REQUIRED) && url->query == NULL) { - zval_dtor(value); - ZVAL_NULL(value); + if ( + ((flags & FILTER_FLAG_SCHEME_REQUIRED) && url->scheme == NULL) || + ((flags & FILTER_FLAG_HOST_REQUIRED) && url->host == NULL) || + ((flags & FILTER_FLAG_PATH_REQUIRED) && url->path == NULL) || + ((flags & FILTER_FLAG_QUERY_REQUIRED) && url->query == NULL) + ) { + php_url_free(url); + RETURN_VALIDATION_FAILED } php_url_free(url); } @@ -517,15 +511,13 @@ void php_filter_validate_email(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ re = pcre_get_compiled_regex((char *)regexp, &pcre_extra, &preg_options TSRMLS_CC); if (!re) { - zval_dtor(value); - ZVAL_NULL(value); + RETURN_VALIDATION_FAILED } matches = pcre_exec(re, NULL, Z_STRVAL_P(value), Z_STRLEN_P(value), 0, 0, ovector, 3); /* 0 means that the vector is too small to hold all the captured substring offsets */ if (matches < 0) { - zval_dtor(value); - ZVAL_NULL(value); + RETURN_VALIDATION_FAILED } } @@ -766,29 +758,21 @@ void php_filter_validate_ip(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ } else if (strchr(str, '.')) { mode = FORMAT_IPV4; } else { - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } if (flags & (FILTER_FLAG_IPV4 || FILTER_FLAG_IPV6)) { /* Both formats are cool */ } else if ((flags & FILTER_FLAG_IPV4) && mode == FORMAT_IPV6) { - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } else if ((flags & FILTER_FLAG_IPV6) && mode == FORMAT_IPV4) { - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } switch (mode) { case FORMAT_IPV4: if (!_php_filter_validate_ipv4(str, ip TSRMLS_CC)) { - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } /* Check flags */ @@ -798,9 +782,7 @@ void php_filter_validate_ip(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ (ip[0] == 172 && (ip[1] >= 16 && ip[1] <= 31)) || (ip[0] == 192 && ip[1] == 168) ) { - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } } @@ -811,9 +793,7 @@ void php_filter_validate_ip(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ (ip[0] == 192 && ip[1] == 0 && ip[2] == 2) || (ip[0] >= 224 && ip[0] <= 255) ) { - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } } break; @@ -823,9 +803,7 @@ void php_filter_validate_ip(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ int res = 0; res = _php_filter_validate_ipv6_(str TSRMLS_CC); if (res < 1) { - zval_dtor(value); - ZVAL_NULL(value); - return; + RETURN_VALIDATION_FAILED } } break; diff --git a/ext/filter/tests/010.phpt b/ext/filter/tests/010.phpt index 0de3467cec568..d0a53c3a8272e 100644 --- a/ext/filter/tests/010.phpt +++ b/ext/filter/tests/010.phpt @@ -21,13 +21,13 @@ array(7) { [1]=> int(1) [2]=> - NULL + bool(false) [3]=> int(-23234) [4]=> - NULL + bool(false) [5]=> - NULL + bool(false) [6]=> array(0) { } @@ -38,20 +38,20 @@ array(7) { [1]=> float(1.7) [2]=> - NULL + bool(false) [3]=> float(-23234.123) [4]=> - NULL + bool(false) [5]=> - NULL + bool(false) [6]=> array(0) { } } -Warning: filter_var() expects parameter 2 to be long, array given in %s on line %d -bool(false) +Warning: filter_var() expects parameter 2 to be long, array given in /home4/php_dev/php52/ext/filter/tests/010.php on line 5 +NULL string(1) "1" string(1) "1" string(1) "1" diff --git a/ext/filter/tests/012.phpt b/ext/filter/tests/012.phpt index 103fd3c8f95fa..ef0525489fa03 100644 --- a/ext/filter/tests/012.phpt +++ b/ext/filter/tests/012.phpt @@ -10,7 +10,7 @@ var_dump(filter_input(INPUT_COOKIE, "")); echo "Done\n"; ?> --EXPECT-- -bool(false) -bool(false) -bool(false) +NULL +NULL +NULL Done diff --git a/ext/filter/tests/013.phpt b/ext/filter/tests/013.phpt index d88145a6e746b..55c71e3535f13 100644 --- a/ext/filter/tests/013.phpt +++ b/ext/filter/tests/013.phpt @@ -49,24 +49,24 @@ int(255) int(7) int(16711680) int(438) -NULL +bool(false) int(0) int(0) -NULL -NULL -NULL -NULL -NULL -NULL -NULL +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) int(6) -NULL -NULL +bool(false) +bool(false) int(-1) -NULL -NULL -NULL -NULL -NULL -NULL +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) Done diff --git a/ext/filter/tests/014.phpt b/ext/filter/tests/014.phpt index f12eac0ed4eea..77e4d255759b3 100644 --- a/ext/filter/tests/014.phpt +++ b/ext/filter/tests/014.phpt @@ -32,9 +32,9 @@ var_dump(filter_var("111111", FILTER_VALIDATE_BOOLEAN)); echo "Done\n"; ?> ---EXPECTF-- +--EXPECT-- +bool(false) bool(false) -NULL bool(false) array(5) { [0]=> @@ -48,7 +48,7 @@ array(5) { [4]=> array(2) { [0]=> - NULL + bool(false) [1]=> bool(false) } @@ -61,7 +61,7 @@ bool(true) bool(false) bool(true) bool(false) -NULL +bool(false) bool(false) bool(false) bool(false) diff --git a/ext/filter/tests/015.phpt b/ext/filter/tests/015.phpt index 67c506f3d0386..edde095e75aab 100644 --- a/ext/filter/tests/015.phpt +++ b/ext/filter/tests/015.phpt @@ -40,7 +40,7 @@ var_dump(filter_var("http://www.example.com/index.php?a=b&c=d", FILTER_VALIDATE_ echo "Done\n"; ?> ---EXPECTF-- +--EXPECT-- string(29) "http://example.com/index.html" string(32) "http://www.example.com/index.php" string(31) "http://www.example/img/test.png" @@ -52,20 +52,20 @@ string(18) "file:///tmp/test.c" string(26) "ftp://ftp.example.com/tmp/" string(11) "/tmp/test.c" string(1) "/" -NULL +bool(false) string(6) "http:/" string(5) "http:" string(4) "http" string(0) "" string(2) "-1" bool(false) -NULL +bool(false) string(10) "http://qwe" -NULL -NULL +bool(false) +bool(false) string(22) "http://www.example.com" -NULL +bool(false) string(42) "http://www.example.com/path/at/the/server/" -NULL +bool(false) string(40) "http://www.example.com/index.php?a=b&c=d" Done diff --git a/ext/filter/tests/016.phpt b/ext/filter/tests/016.phpt index d1c959c119b0b..67921f0188bf0 100644 --- a/ext/filter/tests/016.phpt +++ b/ext/filter/tests/016.phpt @@ -22,11 +22,11 @@ echo "Done\n"; --EXPECT-- string(5) "a@b.c" string(17) "abuse@example.com" -NULL -NULL -NULL -NULL -NULL -NULL +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) string(57) "QWERTYUIOPASDFGHJKLZXCVBNM@QWERTYUIOPASDFGHJKLZXCVBNM.NET" Done diff --git a/ext/filter/tests/017.phpt b/ext/filter/tests/017.phpt index 2b2d9de889fa7..661dfe40ffdba 100644 --- a/ext/filter/tests/017.phpt +++ b/ext/filter/tests/017.phpt @@ -14,11 +14,11 @@ echo "Done\n"; ?> --EXPECTF-- string(4) "data" -NULL +bool(false) string(4) "data" -NULL -NULL +bool(false) +bool(false) Warning: filter_var(): 'regexp' option missing in %s on line %d -NULL +bool(false) Done diff --git a/ext/filter/tests/018.phpt b/ext/filter/tests/018.phpt index 5b0b16da28818..7ea17b329c2b0 100644 --- a/ext/filter/tests/018.phpt +++ b/ext/filter/tests/018.phpt @@ -27,24 +27,24 @@ echo "Done\n"; ?> --EXPECT-- string(11) "192.168.0.1" -NULL +bool(false) string(3) "::1" string(7) "fe00::0" -NULL -NULL +bool(false) +bool(false) string(9) "127.0.0.1" -NULL +bool(false) string(12) "192.0.34.166" string(9) "127.0.0.1" string(9) "192.0.0.1" string(12) "192.0.34.166" -NULL +bool(false) string(15) "255.255.255.255" -NULL -NULL -NULL -NULL -NULL +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) string(3) "::1" string(9) "127.0.0.1" Done diff --git a/ext/filter/tests/019.phpt b/ext/filter/tests/019.phpt index e8c85c8243f71..5a20ff82112e9 100644 --- a/ext/filter/tests/019.phpt +++ b/ext/filter/tests/019.phpt @@ -11,10 +11,10 @@ var_dump(filter_var("1.1.1.1", FILTER_VALIDATE_IP)); echo "Done\n"; ?> ---EXPECTF-- -NULL -NULL -NULL -NULL +--EXPECT-- +bool(false) +bool(false) +bool(false) +bool(false) string(7) "1.1.1.1" Done diff --git a/ext/filter/tests/030.phpt b/ext/filter/tests/030.phpt index 257d1d6cbdd59..97b62b9e26500 100644 --- a/ext/filter/tests/030.phpt +++ b/ext/filter/tests/030.phpt @@ -23,7 +23,7 @@ $ipv6_test = array( ); foreach ($ipv6_test as $ip => $exp) { $out = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); - $out = (int) ($out === null ? 0 : 1); + $out = (int) ($out === false ? 0 : 1); if ($exp != $out) { echo "$ip failed\n"; } diff --git a/ext/filter/tests/031.phpt b/ext/filter/tests/031.phpt index 81dcc1c0e94df..74883b8b26c6b 100644 --- a/ext/filter/tests/031.phpt +++ b/ext/filter/tests/031.phpt @@ -45,10 +45,10 @@ float(7000) float(0.007) custom decimal: -NULL +bool(false) float(1.234) float(1.234) Warning: filter_var(): decimal separator must be one char in %s on line %d -NULL -NULL +bool(false) +bool(false) diff --git a/ext/filter/tests/034.phpt b/ext/filter/tests/034.phpt index a041786639b6c..f96596d7c33aa 100644 --- a/ext/filter/tests/034.phpt +++ b/ext/filter/tests/034.phpt @@ -16,12 +16,12 @@ $booleans = array( 'faLsE' => false, 'oFf' => false, -'' => null +'' => false ); foreach($booleans as $val=>$exp) { $res =filter_var($val, FILTER_VALIDATE_BOOLEAN); - if ($res !== $exp) { + if ($res !== $exp) { echo "$val failed,'$exp' expect, '$res' received.\n"; } } diff --git a/ext/filter/tests/bug8315.phpt b/ext/filter/tests/bug8315.phpt index ae2ac45f85665..ab1a0937edcc1 100644 --- a/ext/filter/tests/bug8315.phpt +++ b/ext/filter/tests/bug8315.phpt @@ -8,6 +8,6 @@ var_dump(filter_var($var, FILTER_VALIDATE_INT)); $var="3".chr(0)."foo"; var_dump(filter_var($var, FILTER_VALIDATE_FLOAT)); ?> ---EXPECTF-- -NULL -NULL +--EXPECT-- +bool(false) +bool(false) diff --git a/ext/filter/tests/filter_data.phpt b/ext/filter/tests/filter_data.phpt index 9ae9ab17bf3f3..14e8545c9b7f2 100644 --- a/ext/filter/tests/filter_data.phpt +++ b/ext/filter/tests/filter_data.phpt @@ -46,7 +46,7 @@ int(123) int(-123) int(0) int(123) -NULL +bool(false) float(-0.123) float(0) @@ -54,7 +54,7 @@ float(1.23) float(-1.23) float(0) float(1.23) -NULL +bool(false) bool(true) bool(false) @@ -67,5 +67,5 @@ bool(false) bool(true) bool(false) bool(true) -NULL -NULL +bool(false) +bool(false)