On Thu, Oct 18, 2012 at 6:45 PM, Pierre Joye <pierre....@gmail.com> wrote:
> hi Dmitry, Laruence!
>
> On Thu, Oct 18, 2012 at 11:46 AM, Laruence <larue...@php.net> wrote:
>> Hey:
>>
>>   recently we found a problem, that is "usage zval_dtor on a recursive
>> array while gc enabled"  has chance to result a segfault.
>>
>>   a reproduce script could be found here:
>> https://github.com/php/php-src/blob/8bd5e15ff7a57791956c4017ee8fb4a8ac0d8d2e/ext/pcre/tests/bug63055.phpt
>>
>>   the preg_match used to call zval_dtor on the third argument. which
>> result a segfault, reported at #63055
>>
>>   the segfault backtrace will looks like: http://pastebin.com/uPWBgrTZ
>>
>>   thanks to dmitry,  we got a simple solution,  that is:  instead of
>> directly call to zval_dtor, please use following codes instead:
>>   "
>>     zval garbage = *subpats;
>>     array_init(subpats);
>>     zval_dtor(&garbage);
>>    "
> Nice catch!
>
> We could add a macro? As it looks like many will forget to do that :)
maybe a seris macro:

ZVAL_REPLACE_LONG()
ZVAL_REPLACE_STRING{L}()
ZVAL_REPLACE_ZVAL()

etc;

thanks , will do it later,  only for trunk I think

thanks
>
> Cheers,
> --
> Pierre
>
> @pierrejoye | http://blog.thepimp.net | http://www.libgd.org



-- 
Laruence  Xinchen Hui
http://www.laruence.com/

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to