Skip to content

Commit f65de30

Browse files
committed
👕 only check CRLF
1 parent 97d8fb1 commit f65de30

2 files changed

Lines changed: 7 additions & 11 deletions

File tree

components/core/src/clp/CurlDownloadHandler.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ CurlDownloadHandler::CurlDownloadHandler(
8181
== std::find(cReservedHeaders.begin(), cReservedHeaders.end(), lower_key))
8282
{
8383
// Filter out illegal header names and header values by regex
84-
if (std::regex_match(key, header_name_pattern)
85-
&& std::regex_match(value, header_value_pattern))
86-
{
84+
if (false == value.empty() && ('\r' != value.back() && '\n' != value.back())) {
8785
m_http_headers.append(fmt::format("{}: {}", key, value));
8886
} else {
8987
throw CurlOperationFailed(
@@ -92,7 +90,8 @@ CurlDownloadHandler::CurlDownloadHandler(
9290
__LINE__,
9391
CURLE_BAD_FUNCTION_ARGUMENT,
9492
fmt::format(
95-
"curl_download_handler_init failed due to illegal header: {}: "
93+
"curl_download_handler_init failed due to CRLF-terminated "
94+
"header: {}: "
9695
"{}.",
9796
key,
9897
value

components/core/tests/test-NetworkReader.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -246,12 +246,9 @@ TEST_CASE("network_reader_with_http_header_kv_pairs", "[NetworkReader]") {
246246
REQUIRE(test_illegal_header("Range", "bytes=100-"));
247247
REQUIRE(test_illegal_header("Cache-Control", "no-cache"));
248248
REQUIRE(test_illegal_header("Pragma", "no-cache"));
249-
// The following headers contain illegal header names, the requests should be rejected.
250-
REQUIRE(test_illegal_header("A Space", "xx"));
251-
REQUIRE(test_illegal_header("A\nNewline", "xx"));
252-
REQUIRE(test_illegal_header("An@At", "xx"));
253-
REQUIRE(test_illegal_header("-Start-with-Non-Alphanumeric", "xx"));
254249
// The following headers contain illegal header values, the requests should be rejected.
255-
REQUIRE(test_illegal_header("Legal-Name1", "newline\n"));
256-
REQUIRE(test_illegal_header("Legal-Name2", "control-char\x01"));
250+
REQUIRE(test_illegal_header("Legal-Name1", "CRLF\n"));
251+
REQUIRE(test_illegal_header("Legal-Name2", "CRLF\r"));
252+
REQUIRE(test_illegal_header("Legal-Name3", "CRLF\n\r"));
253+
REQUIRE(test_illegal_header("Legal-Name4", "CRLF\r\n"));
257254
}

0 commit comments

Comments
 (0)