Re: [PATCH] Fix segfault in filter extension when using callbacks

From: Date: Sun, 24 Feb 2008 15:48:50 +0000
Subject: Re: [PATCH] Fix segfault in filter extension when using callbacks
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-35769@lists.php.net to get a copy of this message
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


« previous php.internals (#35769) next »