From 774539dea8a9521e8d8df2908082f7eb43be099e Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Sat, 9 Apr 2016 18:20:31 +0200 Subject: [PATCH] Add more error checking in net resolve. --- Core/Config.cpp | 5 +++++ ext/native/net/http_client.cpp | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Core/Config.cpp b/Core/Config.cpp index b96a23b950..e66ac808c6 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -1058,6 +1058,11 @@ void Config::DownloadCompletedCallback(http::Download &download) { JsonReader reader(data.c_str(), data.size()); const json_value *root = reader.root(); + if (!root) { + ERROR_LOG(LOADER, "Failed to parse json"); + return; + } + std::string version = root->getString("version", ""); const char *gitVer = PPSSPP_GIT_VERSION; diff --git a/ext/native/net/http_client.cpp b/ext/native/net/http_client.cpp index 739923519e..b6b09eb837 100644 --- a/ext/native/net/http_client.cpp +++ b/ext/native/net/http_client.cpp @@ -46,11 +46,15 @@ bool Connection::Resolve(const char *host, int port) { ELOG("Resolve: Already have a socket"); return false; } + if (!host || port < 1 || port > 65535) { + ELOG("Resolve: Invalid host or port (%d)", port); + return false; + } host_ = host; port_ = port; - char port_str[10]; + char port_str[16]; snprintf(port_str, sizeof(port_str), "%d", port); std::string err;