diff --git a/r5dev/networksystem/bansystem.cpp b/r5dev/networksystem/bansystem.cpp index 427dee69..748fea68 100644 --- a/r5dev/networksystem/bansystem.cpp +++ b/r5dev/networksystem/bansystem.cpp @@ -40,6 +40,12 @@ void CBanSystem::LoadList(void) return; } + if (!document.IsObject()) + { + Warning(eDLL_T::SERVER, "%s: JSON root was not an object\n", __FUNCTION__); + return; + } + uint64_t nTotalBans = 0; if (document.HasMember("totalBans") && document["totalBans"].IsUint64()) { diff --git a/r5dev/networksystem/pylon.cpp b/r5dev/networksystem/pylon.cpp index 9380580b..a939704b 100644 --- a/r5dev/networksystem/pylon.cpp +++ b/r5dev/networksystem/pylon.cpp @@ -337,6 +337,12 @@ bool CPylon::SendRequest(const char* endpoint, const rapidjson::Document& reques return false; } + if (!responseJson.IsObject()) + { + Warning(eDLL_T::SERVER, "%s: JSON root was not an object\n", __FUNCTION__); + return false; + } + if (pylon_showdebuginfo->GetBool()) { LogBody(responseJson); @@ -429,7 +435,8 @@ bool CPylon::QueryServer(const char* endpoint, const char* request, void CPylon::ExtractError(const rapidjson::Document& resultJson, string& outMessage, CURLINFO status, const char* errorText) const { - if (resultJson.HasMember("error") && + + if (resultJson.IsObject() && resultJson.HasMember("error") && resultJson["error"].IsString()) { outMessage = resultJson["error"].GetString();