- From: Jens Meggers <jens.meggers@firepad.com>
- Date: Sun, 25 Mar 2001 13:55:37 -0800
- To: "'www-lib@w3.org'" <www-lib@w3.org>
Hi, sorry for bombing you with bug reports, but there is an additional bug in HTTChunk.c. In the procedure HTChunkDecode_header(), there is a user breakpoint for the case the chunk length is not present in a line where it is expected. I understand that a bug in a web server may cause such problem. In order to graceful recover from such a request, the function should return an error code in if (errstr == line) { HTDEBUGBREAK("Chunk decoder received illigal chunk size: `%s\'\n" _ line); return NO; } The original version just continues, and returns a zero, causing the chunk decoder to screw up. I just added the "return NO" code. Regards, Jens /* ** Chunked Decoder stream */ PRIVATE BOOL HTChunkDecode_header (HTStream * me) { char * line = HTChunk_data(me->buf); if (line) { char *errstr = NULL; me->left = strtol(line, &errstr, 16); /* hex! */ HTTRACE(STREAM_TRACE, "Chunked..... `%s\' chunk size: %X\n" _ line _ me->left); if (errstr == line) { HTDEBUGBREAK("Chunk decoder received illigal chunk size: `%s\'\n" _ line); return NO; } if (me->left > 0) { me->total += me->left; /* Look for arguments */ HTChunk_clear(me->buf); } else if (me->left == 0) /* Last chunk */ me->lastchunk = YES; else if (me->left < 0) return NO; return YES; } return NO; }
Received on Sunday, 25 March 2001 17:05:59 UTC