mirror of https://github.com/Icinga/icinga2.git
Add HTTP Header size limits
This commit is contained in:
parent
2789d1a859
commit
a9f2a8de19
|
@ -41,8 +41,15 @@ bool HttpRequest::Parse(StreamReadContext& src, bool may_wait)
|
|||
String line;
|
||||
StreamReadStatus srs = m_Stream->ReadLine(&line, src, may_wait);
|
||||
|
||||
if (srs != StatusNewItem)
|
||||
if (srs != StatusNewItem) {
|
||||
if (src.Size > 512)
|
||||
BOOST_THROW_EXCEPTION(std::invalid_argument("Line length for HTTP header exceeded"));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (line.GetLength() > 512)
|
||||
BOOST_THROW_EXCEPTION(std::invalid_argument("Line length for HTTP header exceeded"));
|
||||
|
||||
if (m_State == HttpRequestStart) {
|
||||
/* ignore trailing new-lines */
|
||||
|
@ -79,6 +86,9 @@ bool HttpRequest::Parse(StreamReadContext& src, bool may_wait)
|
|||
return true;
|
||||
|
||||
} else {
|
||||
if (Headers->GetLength() > 128)
|
||||
BOOST_THROW_EXCEPTION(std::invalid_argument("Maximum number of HTTP request headers exceeded"));
|
||||
|
||||
String::SizeType pos = line.FindFirstOf(":");
|
||||
if (pos == String::NPos)
|
||||
BOOST_THROW_EXCEPTION(std::invalid_argument("Invalid HTTP request"));
|
||||
|
|
Loading…
Reference in New Issue