mirror of
https://github.com/boostorg/beast.git
synced 2025-07-30 04:47:29 +02:00
Fix buffer overflow handling for string_body and mutable_body
fix #553, fix #558
This commit is contained in:
committed by
Vinnie Falco
parent
c149321013
commit
ebfc3f4537
@ -5,6 +5,7 @@ Version 71:
|
||||
* Fix spurious on_chunk invocation
|
||||
* Call prepare_payload in HTTP example
|
||||
* Check trailers in test
|
||||
* Fix buffer overflow handling for string_body and mutable_body
|
||||
|
||||
WebSockets:
|
||||
|
||||
|
@ -109,14 +109,21 @@ struct mutable_body
|
||||
if(*content_length > (std::numeric_limits<
|
||||
std::size_t>::max)())
|
||||
{
|
||||
ec = boost::system::errc::make_error_code(
|
||||
boost::system::errc::not_enough_memory);
|
||||
ec = beast::http::error::buffer_overflow;
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
body_.reserve(static_cast<
|
||||
std::size_t>(*content_length));
|
||||
}
|
||||
catch(std::exception const&)
|
||||
{
|
||||
ec = beast::http::error::buffer_overflow;
|
||||
return;
|
||||
}
|
||||
ec.assign(0, ec.category());
|
||||
body_.reserve(static_cast<
|
||||
std::size_t>(*content_length));
|
||||
}
|
||||
ec.assign(0, ec.category());
|
||||
}
|
||||
|
||||
template<class ConstBufferSequence>
|
||||
@ -132,7 +139,7 @@ struct mutable_body
|
||||
{
|
||||
body_.resize(len + n);
|
||||
}
|
||||
catch(std::length_error const&)
|
||||
catch(std::exception const&)
|
||||
{
|
||||
ec = beast::http::error::buffer_overflow;
|
||||
return 0;
|
||||
|
@ -90,18 +90,21 @@ struct string_body
|
||||
if(*content_length > (std::numeric_limits<
|
||||
std::size_t>::max)())
|
||||
{
|
||||
ec = make_error_code(
|
||||
errc::not_enough_memory);
|
||||
ec = error::buffer_overflow;
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
body_.reserve(static_cast<
|
||||
std::size_t>(*content_length));
|
||||
}
|
||||
catch(std::exception const&)
|
||||
{
|
||||
ec = error::buffer_overflow;
|
||||
return;
|
||||
}
|
||||
ec.assign(0, ec.category());
|
||||
body_.reserve(static_cast<
|
||||
std::size_t>(*content_length));
|
||||
}
|
||||
else
|
||||
{
|
||||
ec.assign(0, ec.category());
|
||||
}
|
||||
ec.assign(0, ec.category());
|
||||
}
|
||||
|
||||
template<class ConstBufferSequence>
|
||||
@ -117,7 +120,7 @@ struct string_body
|
||||
{
|
||||
body_.resize(len + n);
|
||||
}
|
||||
catch(std::length_error const&)
|
||||
catch(std::exception const&)
|
||||
{
|
||||
ec = error::buffer_overflow;
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user