mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 05:08:13 +00:00
LibHTTP: Trim received data to Content-Length
Apparently servers will feel free to pad their response if they send one that contains a content-length field. We should not assume that the entirety of the response is valid data.
This commit is contained in:
parent
ce0bed0482
commit
a63e8c4a03
2 changed files with 9 additions and 3 deletions
|
@ -158,8 +158,11 @@ void HttpJob::on_socket_connected()
|
||||||
auto content_length_header = m_headers.get("Content-Length");
|
auto content_length_header = m_headers.get("Content-Length");
|
||||||
if (content_length_header.has_value()) {
|
if (content_length_header.has_value()) {
|
||||||
bool ok;
|
bool ok;
|
||||||
if (m_received_size >= content_length_header.value().to_uint(ok) && ok)
|
auto content_length = content_length_header.value().to_uint(ok);
|
||||||
return finish_up();
|
if (ok && m_received_size >= content_length) {
|
||||||
|
m_received_size = content_length;
|
||||||
|
finish_up();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -168,8 +168,11 @@ void HttpsJob::on_socket_connected()
|
||||||
auto content_length_header = m_headers.get("Content-Length");
|
auto content_length_header = m_headers.get("Content-Length");
|
||||||
if (content_length_header.has_value()) {
|
if (content_length_header.has_value()) {
|
||||||
bool ok;
|
bool ok;
|
||||||
if (m_received_size >= content_length_header.value().to_uint(ok) && ok)
|
auto content_length = content_length_header.value().to_uint(ok);
|
||||||
|
if (ok && m_received_size >= content_length) {
|
||||||
|
m_received_size = content_length;
|
||||||
finish_up();
|
finish_up();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// no content-length, assume closed connection
|
// no content-length, assume closed connection
|
||||||
finish_up();
|
finish_up();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue