From a9faac25fc9f7a1ae26132095c9912ac9a72abbf Mon Sep 17 00:00:00 2001 From: Tixx <83774803+WiserTixx@users.noreply.github.com> Date: Tue, 11 Aug 2026 22:19:49 +0200 Subject: [PATCH] Bump version to v2.8.1 --- src/Network/Resources.cpp | 16 ++++++++++++++-- src/Startup.cpp | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/Network/Resources.cpp b/src/Network/Resources.cpp index 2869fd9..b55111f 100644 --- a/src/Network/Resources.cpp +++ b/src/Network/Resources.cpp @@ -307,7 +307,7 @@ void InvalidResource(const std::string& File) { } struct ModInfo { - static std::pair> ParseModInfosFromPacket(const std::string& packet) { + static std::optional>> ParseModInfosFromPacket(const std::string& packet) { bool success = false; std::vector modInfos; try { @@ -328,6 +328,12 @@ struct ModInfo { modInfo.Protected = entry["protected"]; } + if (auto fsFile = std::filesystem::path(modInfo.FileName); + !fsFile.has_filename() || fsFile.filename().string() != modInfo.FileName || + !fsFile.filename().has_extension() || fsFile.filename().extension() != ".zip"){ + return std::nullopt; + } + modInfos.push_back(modInfo); success = true; } @@ -616,7 +622,13 @@ void SyncResources(SOCKET Sock) { if (Ret.starts_with("R")) { debug("This server is likely outdated, not trying to parse new mod info format"); } else { - auto [success, modInfo] = ModInfo::ParseModInfosFromPacket(Ret); + auto ParsedInfo = ModInfo::ParseModInfosFromPacket(Ret); + if (!ParsedInfo.has_value()) { + error("Invalid mod info"); + Terminate = true; + return; + } + auto [success, modInfo] = ParsedInfo.value(); if (success) { NewSyncResources(Sock, Ret, modInfo); diff --git a/src/Startup.cpp b/src/Startup.cpp index 47ca46a..52903f4 100644 --- a/src/Startup.cpp +++ b/src/Startup.cpp @@ -86,7 +86,7 @@ std::string GetVer() { return "2.8"; } std::string GetPatch() { - return ".0"; + return ".1"; } beammp_fs_string GetEP(const beammp_fs_char* P) {