- if (c = http_message_header(msg, "Content-Length")) {
- long len = atol(Z_STRVAL_P(c));
+ if ((c = http_message_header(msg, "Content-Length"))) {
+ ulong len = strtoul(Z_STRVAL_P(c), NULL, 10);
+ if (len > remaining) {
+ http_error_ex(HE_NOTICE, HTTP_E_MALFORMED_HEADERS, "The Content-Length header pretends a larger body than actually received (expected %lu bytes; got %lu bytes)", len, remaining);
+ len = remaining;
+ }