]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Sync r1895054 from libapreq.
authorYann Ylavic <ylavic@apache.org>
Mon, 15 Nov 2021 14:56:23 +0000 (14:56 +0000)
committerYann Ylavic <ylavic@apache.org>
Mon, 15 Nov 2021 14:56:23 +0000 (14:56 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1895055 13f79535-47bb-0310-9956-ffa450edef68

server/apreq_parser_header.c

index 3f58214ec197afe762834b9debc2cc9dc8a0caab..6f72f563fd9c501bda1ab59eb040c5463465a3cb 100644 (file)
@@ -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 = &param->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;