>
> Could this be dinamically allocated?

Indeed it can! Thanks Giuseppe and Darshit for pointing out. Ideally we
should change all the resp_header_copy calls to resp_header_strdup (dynamic
resp header copy). There is a bit to code to change, as the function
returns are different etc. expect a big patch.

I will also make a test for long header sizes as Tim suggested.

Cheers,

Miquel Llobet



On Sat, Mar 14, 2015 at 8:34 PM, Darshit Shah <[email protected]> wrote:

> Hi Miquel,
>
> Thanks a lot for making this contribution.
>
> I not a supporter of making such large (8K is gigantic!) memory
> assignments on the stack. Wget runs not only on the latest x86_64
> processors, but often also on ancient and obscure architectures. And
> assignment of a variable using 8K of memory on the stack may not be
> possible on some architectures.
> Instead, I think this should be done via dynamic memory allocation.
>
>
> On 03/12, Miquel Llobet wrote:
>
>> Increased the header buffer to 8Kb, as there are no limits to the size of
>> field name, values or headers themselves. While the current value is big
>> enough, other projects such as Apache [1] or nginx have limits of 4-8Kb.
>>
>> If we want to allow for arbitrary size headers we should use
>> resp_header_strdup instead of resp_header_copy, but this new value should
>> be enough.
>>
>> --- src/http.c.orig 2015-03-12 21:50:03.000000000 +0100
>> +++ src/http.c 2015-03-12 21:04:08.000000000 +0100
>> @@ -1695,7 +1695,7 @@
>>
>>   char *head;
>>   struct response *resp;
>> -  char hdrval[512];
>> +  char hdrval[8190];
>>   char *message;
>>
>>   /* Declare WARC variables. */
>>
>> [1]: https://httpd.apache.org/docs/2.2/mod/core.html#
>> limitrequestfieldsize
>>
>> Miquel Llobet
>>
> --- end quoted text ---
>
> --
> Thanking You,
> Darshit Shah
>

Reply via email to