On Oct 26, 2011, at 3:46 PM, Stefan Fritsch wrote:

> On Wednesday 26 October 2011, Jim Jagielski wrote:
>> On Oct 25, 2011, at 6:29 PM, s...@apache.org wrote:
>>> +    if (len > maxlen && maxlen > 0)
>>> +        return APR_ENOMEM;
>>> +
>>> 
>>>    if (!vb) {
>>> 
>>> -        dest = dst = apr_pcalloc(p, len + 1);
>>> +        *result = dst = apr_pcalloc(p, len + 1);
>> 
>> if len == maxlen and == APR_SIZE_MAX then doesn't
>> the len+1 blow us up?
> 
> APR_SIZE_MAX means no limit, i.e. it will blow up when there is no 
> memory left, which will be well before APR_SIZE_MAX. I guess I should 
> have used 0, that would have been clearer.
> 

I thought that

        #define APR_SIZE_MAX    (~((apr_size_t)0))

returned the one's complement of 0, which would basically
be the largest value possible for (apr_size_t)0, and that
adding 1 to it would overflow… right? Or am I still jet-lagged
(which is quite possible).

The main question is whether or not maxlen accounts for
the NUL or not; we seem inconsistent in that regard with
this patch.

Reply via email to