From a4f9a93969d8d2dd49632d9d51117153e749a77e Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Tue, 21 Feb 2023 14:07:34 +0100 Subject: UE 177395 - fix crash when using asio http server and requesting info on non-existing chunk (#235) * Dont' write httpreq responses with content type text for empty strings --- zenserver/projectstore/projectstore.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'zenserver/projectstore/projectstore.cpp') diff --git a/zenserver/projectstore/projectstore.cpp b/zenserver/projectstore/projectstore.cpp index c3fba7dff..184bba022 100644 --- a/zenserver/projectstore/projectstore.cpp +++ b/zenserver/projectstore/projectstore.cpp @@ -2423,6 +2423,10 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects, static_cast(Result.first), Result.second); } + if (Result.second.empty()) + { + return HttpReq.WriteResponse(Result.first); + } return HttpReq.WriteResponse(Result.first, HttpContentType::kText, Result.second); }, HttpVerb::kGet); @@ -2454,6 +2458,10 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects, static_cast(Result.first), Result.second); } + if (Result.second.empty()) + { + return HttpReq.WriteResponse(Result.first); + } return HttpReq.WriteResponse(Result.first, HttpContentType::kText, Result.second); }, HttpVerb::kGet); @@ -2518,6 +2526,10 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects, static_cast(Result.first), Result.second); } + if (Result.second.empty()) + { + return HttpReq.WriteResponse(Result.first); + } return HttpReq.WriteResponse(Result.first, HttpContentType::kText, Result.second); }, HttpVerb::kGet | HttpVerb::kHead); @@ -2557,6 +2569,10 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects, static_cast(Result.first), Result.second); } + if (Result.second.empty()) + { + return HttpReq.WriteResponse(Result.first); + } return HttpReq.WriteResponse(Result.first, HttpContentType::kText, Result.second); } case HttpVerb::kPost: @@ -2575,6 +2591,10 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects, static_cast(Result.first), Result.second); } + if (Result.second.empty()) + { + return HttpReq.WriteResponse(Result.first); + } return HttpReq.WriteResponse(Result.first, HttpContentType::kText, Result.second); } break; @@ -3107,6 +3127,10 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects, { return HttpReq.WriteResponse(HttpResponseCode::OK, Response); } + if (Result.second.empty()) + { + return HttpReq.WriteResponse(Result.first); + } return HttpReq.WriteResponse(Result.first, HttpContentType::kText, Result.second); }, HttpVerb::kPost); @@ -3131,6 +3155,10 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects, { return HttpReq.WriteResponse(HttpResponseCode::OK, Response); } + if (Result.second.empty()) + { + return HttpReq.WriteResponse(Result.first); + } return HttpReq.WriteResponse(Result.first, HttpContentType::kText, Result.second); }, HttpVerb::kGet); -- cgit v1.2.3