1
0
mirror of synced 2025-07-30 22:03:07 +03:00

Fix range parser when parsing too many ranges (#1812)

* Implement range parser without std::regex

* Add test cases for invalid ranges
This commit is contained in:
Jiwoo Park
2024-04-07 23:06:16 +09:00
committed by GitHub
parent a61f2b89be
commit f44ab9b3da
2 changed files with 51 additions and 23 deletions

View File

@ -352,6 +352,25 @@ TEST(ParseHeaderValueTest, Range) {
EXPECT_EQ(300u, ranges[2].first);
EXPECT_EQ(400u, ranges[2].second);
}
{
Ranges ranges;
EXPECT_FALSE(detail::parse_range_header("bytes", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes=", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes=0", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes=-", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes= ", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes=,", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes=,,", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes=,,,", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes=a-b", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes=1-0", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes=0--1", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes=0- 1", ranges));
EXPECT_FALSE(detail::parse_range_header("bytes=0 -1", ranges));
EXPECT_TRUE(ranges.empty());
}
}
TEST(ParseAcceptEncoding1, AcceptEncoding) {