diff --git a/httplib.h b/httplib.h index b4f89d6..6ec2d76 100644 --- a/httplib.h +++ b/httplib.h @@ -7983,9 +7983,7 @@ inline bool ClientImpl::process_request(Stream &strm, Request &req, : static_cast( [&](const char *buf, size_t n, uint64_t /*off*/, uint64_t /*len*/) { - if (res.body.size() + n > res.body.max_size()) { - return false; - } + assert(res.body.size() + n <= res.body.max_size()); res.body.append(buf, n); return true; }); @@ -7999,9 +7997,12 @@ inline bool ClientImpl::process_request(Stream &strm, Request &req, if (res.has_header("Content-Length")) { if (!req.content_receiver) { - auto len = std::min(res.get_header_value_u64("Content-Length"), - res.body.max_size()); - if (len > 0) { res.body.reserve(len); } + auto len = res.get_header_value_u64("Content-Length"); + if (len > res.body.max_size()) { + error = Error::Read; + return false; + } + res.body.reserve(len); } }