Erm, the attachement got stripped away, heres the patch..
--- php-5.2.5/ext/filter/filter.c 2007-04-04 20:50:26.000000000 +0000
+++ php-5.2.5-fixed/ext/filter/filter.c 2008-02-24 15:14:19.000000000
+0000
@@ -322,7 +322,7 @@
filter_func.function(*value, flags, options, charset TSRMLS_CC);
if (
- options &&
+ options && (Z_TYPE_P(options) == IS_ARRAY || Z_TYPE_P(options)
== IS_OBJECT) &&
((flags & FILTER_NULL_ON_FAILURE && Z_TYPE_PP(value) ==
IS_NULL) ||
(!(flags & FILTER_NULL_ON_FAILURE) && Z_TYPE_PP(value) ==
IS_BOOL && Z_LVAL_PP(value) == 0)) &&
zend_hash_exists(HASH_OF(options), "default",
sizeof("default"))
Arnar Mar Sig
On Feb 24, 2008, at 3:37 PM, Arnar Mar Sig wrote:
The filter extensinon will segfault if a callback filter returns
FALSE, this little patch fixes that.
There is also no way to set default value if the callback fails
because of a design flow. When dealing with callbacks the 'options'
key in the options parameters just be a valid callback, but to set a
default value then this key must be a array that includes the key
'default'.
Test case:
function filter_test($str) { return FALSE; }
var_dump(filter_var('durty/boy', FILTER_CALLBACK, array(
'options' => 'filter_test',
)));
Arnar Mar Sig
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php