On Thu, March 14, 2013 12:42, Derick Rethans wrote:
> On Wed, 13 Mar 2013, Anatol Belski wrote:
>
>
>> On Mon, 2013-03-11 at 11:42 +0000, Derick Rethans wrote:
>>
>>>
>>> On Mon, 11 Mar 2013, Anatol Belski wrote:
>>>
>>>>
>>>> What is the way you had in the mind to achieve the
>>>> string<->integer conversions?
>>>
>>> atoll() (or atoq()).
>>
>> Please take a look at the reworked patch in #53437
>>
>>
>> https://bugs.php.net/patch-display.php?bug_id=53437&patch=date_patch_va
>> r3.patch&revision=latest
>>
>> Serializing 64 bit integers as strings.
>>
>
> That bit looks ok, I have a few comments though:
>
>
> +     PHP_DATE_INTERVAL_READ_PROPERTY("special_type", special.type, unsigned
> int); +       if ((*intobj)->diff->special.amount > 12 ||
> (*intobj)->diff->special.amount < -12) {
> +             php_error(E_ERROR, "Invalid serialization data for DateInterval 
> object
> (special_amount)");
> +     }
>
>
> Checking for the values here, means that the library (timelib) isn't
> in control of the values that are allowed anymore. I wonder whether the
> deserialisation should bother checking some of those special/extra
> types/values. The only important thing is to not have things crash really.
>

I think that checks can be safely removed. I just reintegrated them from
the previous patch. It wouldn't crash with those removed. I'll recheck it
with the timelib and remove them.

>
> And secondly, where are the test cases?
>

Just wanted to hear your OK in general. The test is primarily the
iteratior snippet from the ticket plus a couple of bad serialization
strings. As there are about 10 tests having to be fixed after this change
(mostly because of the changed var_dump output), i'll do them all together
while commiting.


One doubt I have yet after investigating on #62852 is that issuing
php_error isn't recoverable, it might be much better to throw exception in
__wakeup(), just like __construct() does. This question crosses both
#62852  and #53437. That would work for 5.5 as unserialize() cares about
exceptions in __wakeup(), in 5.4 and less php_error seems to be a better
way. What do you think?

Regards

Anatol


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

Reply via email to