From: Yann Ylavic Date: Mon, 15 Nov 2021 14:56:23 +0000 (+0000) Subject: Sync r1895054 from libapreq. X-Git-Tag: 2.5.0-alpha2-ci-test-only~694 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ce2509b302b114637540760e2b27a1b360f35e29;p=thirdparty%2Fapache%2Fhttpd.git Sync r1895054 from libapreq. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1895055 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/apreq_parser_header.c b/server/apreq_parser_header.c index 3f58214ec19..6f72f563fd9 100644 --- a/server/apreq_parser_header.c +++ b/server/apreq_parser_header.c @@ -81,7 +81,7 @@ static apr_status_t consume_header_line(apreq_param_t **p, char *dest; const char *data; apr_size_t dlen; - int i; + int i, eol = 0; param = apreq_param_make(pool, NULL, nlen, NULL, vlen); *(const apreq_value_t **)&v = ¶m->v; @@ -138,7 +138,9 @@ static apr_status_t consume_header_line(apreq_param_t **p, for (off = 0; off < dlen; ++off) { const char ch = data[off]; if (ch == '\r' || ch == '\n') { - /* skip continuation CRLF(s) */ + /* Eat [CR]LF of continuation or end of line */ + if (!vlen && ch == '\n') + eol = 1; /* done */ continue; } assert(vlen > 0); @@ -148,7 +150,7 @@ static apr_status_t consume_header_line(apreq_param_t **p, } e = APR_BUCKET_NEXT(e); - } while (vlen > 0); + } while (!eol); v->dlen = dest - v->data; *dest++ = 0;