On Wed, May 29, 2002 at 02:57:27PM -0000, [EMAIL PROTECTED] wrote:
>   Ignore leading zeros when parsing hex value for chunk extensions.
>    
>   +    /* Skip leading zeros */
>   +    while (*b == '0') {
>   +        ++b;
>   +    }
>   +
>        while (apr_isxdigit(*b) && (chunkbits > 0)) {

This patch will IMHO not change anything at all. Leading zeros are
added by the while (apr_isxdigit..) loop by shifting 0 << 4 and adding 0.
They never produce any overflow condition, no matter how many there are.

But it might be interesting to check the current value of
chunksize within the loop:

    while (apr_isxdigit(*b)) {
        int xvalue = 0;

      ...set xvalue to the next hex digit, value 0 thru 15...

        /* ---> Add here: a check whether the chunk will overflow the limit */
        if (chunksize > ((limit_req_line + 15) >> 4))
            signal an error;

        chunksize = (chunksize << 4) | xvalue;
        ++b;
    }

But we need
a) an extra parameter to pass the limit's value
  (something like r->server->limit_req_line or a new configurable
  max.chunk size) and
b) an error condition (get_chunk_size() currently has none)
  to signal such an error.

   Martin
-- 
<[EMAIL PROTECTED]>         |     Fujitsu Siemens
Fon: +49-89-636-46021, FAX: +49-89-636-47655 | 81730  Munich,  Germany

Reply via email to