Merge branch 'update-http-parser'
This commit is contained in:
commit
ce962c3fdf
|
@ -1497,24 +1497,20 @@ reexecute:
|
||||||
switch (h_state) {
|
switch (h_state) {
|
||||||
case h_general:
|
case h_general:
|
||||||
{
|
{
|
||||||
const char* p_cr;
|
const char* limit = p + MIN(data + len - p, max_header_size);
|
||||||
const char* p_lf;
|
|
||||||
size_t limit = data + len - p;
|
|
||||||
|
|
||||||
limit = MIN(limit, max_header_size);
|
for (; p != limit; p++) {
|
||||||
|
ch = *p;
|
||||||
p_cr = (const char*) memchr(p, CR, limit);
|
if (ch == CR || ch == LF) {
|
||||||
p_lf = (const char*) memchr(p, LF, limit);
|
--p;
|
||||||
if (p_cr != NULL) {
|
break;
|
||||||
if (p_lf != NULL && p_cr >= p_lf)
|
|
||||||
p = p_lf;
|
|
||||||
else
|
|
||||||
p = p_cr;
|
|
||||||
} else if (UNLIKELY(p_lf != NULL)) {
|
|
||||||
p = p_lf;
|
|
||||||
} else {
|
|
||||||
p = data + len;
|
|
||||||
}
|
}
|
||||||
|
if (!lenient && !IS_HEADER_CHAR(ch)) {
|
||||||
|
SET_ERRNO(HPE_INVALID_HEADER_TOKEN);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (p == data + len)
|
||||||
--p;
|
--p;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ extern "C" {
|
||||||
/* Also update SONAME in the Makefile whenever you change these. */
|
/* Also update SONAME in the Makefile whenever you change these. */
|
||||||
#define HTTP_PARSER_VERSION_MAJOR 2
|
#define HTTP_PARSER_VERSION_MAJOR 2
|
||||||
#define HTTP_PARSER_VERSION_MINOR 9
|
#define HTTP_PARSER_VERSION_MINOR 9
|
||||||
#define HTTP_PARSER_VERSION_PATCH 0
|
#define HTTP_PARSER_VERSION_PATCH 1
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#if defined(_WIN32) && !defined(__MINGW32__) && \
|
#if defined(_WIN32) && !defined(__MINGW32__) && \
|
||||||
|
|
|
@ -4316,6 +4316,9 @@ main (void)
|
||||||
test_simple("GET / HTTP/11.1\r\n\r\n", HPE_INVALID_VERSION);
|
test_simple("GET / HTTP/11.1\r\n\r\n", HPE_INVALID_VERSION);
|
||||||
test_simple("GET / HTTP/1.01\r\n\r\n", HPE_INVALID_VERSION);
|
test_simple("GET / HTTP/1.01\r\n\r\n", HPE_INVALID_VERSION);
|
||||||
|
|
||||||
|
test_simple("GET / HTTP/1.0\r\nHello: w\1rld\r\n\r\n", HPE_INVALID_HEADER_TOKEN);
|
||||||
|
test_simple("GET / HTTP/1.0\r\nHello: woooo\2rld\r\n\r\n", HPE_INVALID_HEADER_TOKEN);
|
||||||
|
|
||||||
// Extended characters - see nodejs/test/parallel/test-http-headers-obstext.js
|
// Extended characters - see nodejs/test/parallel/test-http-headers-obstext.js
|
||||||
test_simple("GET / HTTP/1.1\r\n"
|
test_simple("GET / HTTP/1.1\r\n"
|
||||||
"Test: Düsseldorf\r\n",
|
"Test: Düsseldorf\r\n",
|
||||||
|
|
Loading…
Reference in New Issue