Fix previous content-length != content-range patch

In the case where no Content-Length header is seen, the content_length
value still should be set based upon the range (same as it would
have been before the patch).
This commit is contained in:
Jon Siwek 2018-05-08 13:25:14 -05:00
parent c0cc4ef192
commit 2e2d086144

View file

@ -42,7 +42,7 @@ HTTP_Entity::HTTP_Entity(HTTP_Message *arg_message, MIME_Entity* parent_entity,
http_message = arg_message;
expect_body = arg_expect_body;
chunked_transfer_state = NON_CHUNKED_TRANSFER;
content_length = -1; // unspecified
content_length = range_length = -1; // unspecified
expect_data_length = 0;
body_length = 0;
header_length = 0;
@ -445,7 +445,10 @@ void HTTP_Entity::SubmitHeader(mime::MIME_Header* h)
is_partial_content = true;
offset = f;
range_length = len;
if ( content_length != 0 && content_length != range_length )
if ( content_length > 0 )
{
if ( content_length != range_length )
{
// Possible evasion attempt.
http_message->Weird("HTTP_range_not_matching_len");
@ -455,6 +458,9 @@ void HTTP_Entity::SubmitHeader(mime::MIME_Header* h)
content_length = range_length;
}
}
else
content_length = range_length;
}
else
{
http_message->Weird("HTTP_non_positive_content_range");