I do suspect a bug in the errdocs code but unrelated to file size.

server_abort_http() uses strlen() to re-calculate the Content-Length of the
errdoc. This is very wrong because embedded NULs in the file body will cause
a truncated value. A NUL at 40k will cause it to be truncated as such.

AFAIK 0x00 are valid characters in Unicode response bodies.

read_errdoc() should be modified to return the number of bytes read from
fstat(). It does calculate this but the value is discarded and not returned.

Oddly the comments for read_errdoc() do not match the code that follows,
because it returns a pointer to the file contents, not a length:

/*
 * return -1 on failure, strlen() of read file otherwise.
 * body is NULL on failure, contents of file with trailing \0 otherwise.
 */

The mismatched documentation has been there since the original commit.

Regards
Lloyd

Фёдор <[email protected]> wrote:

> error in errdocs in httpd. when creating a large html page for an error, it 
> truncates it to 40 kilobytes.

Reply via email to