Check hash with regex

This commit is contained in:
Tixx
2026-03-31 23:47:46 +02:00
parent 13102552b7
commit 7ae273f550

View File

@@ -335,6 +335,15 @@ void CheckForUpdates(const std::string& CV) {
std::string LatestVersion = HTTP::Get( std::string LatestVersion = HTTP::Get(
"https://backend.beammp.com/version/launcher?branch=" + Branch + "&pk=" + PublicKey); "https://backend.beammp.com/version/launcher?branch=" + Branch + "&pk=" + PublicKey);
std::regex sha256_pattern(R"(^[a-fA-F0-9]{64}$)");
std::smatch match;
if (LatestHash.length() != 64 || !std::regex_match(LatestHash, match, sha256_pattern)) {
error("Invalid hash from backend, skipping update check.");
debug("Launcher hash in question: " + LatestHash);
return;
}
transform(LatestHash.begin(), LatestHash.end(), LatestHash.begin(), ::tolower); transform(LatestHash.begin(), LatestHash.end(), LatestHash.begin(), ::tolower);
beammp_fs_string BP(GetBP() / GetEN()), Back(GetBP() / beammp_wide("BeamMP-Launcher.back")); beammp_fs_string BP(GetBP() / GetEN()), Back(GetBP() / beammp_wide("BeamMP-Launcher.back"));
@@ -511,6 +520,15 @@ void PreGame(const beammp_fs_string& GamePath) {
[](auto const& c) -> bool { return !std::isalnum(c); }), [](auto const& c) -> bool { return !std::isalnum(c); }),
LatestHash.end()); LatestHash.end());
std::regex sha256_pattern(R"(^[a-fA-F0-9]{64}$)");
std::smatch match;
if (LatestHash.length() != 64 || !std::regex_match(LatestHash, match, sha256_pattern)) {
error("Invalid hash from backend, skipping mod update check.");
debug("Mod hash in question: " + LatestHash);
return;
}
try { try {
if (!fs::exists(GetGamePath() / beammp_wide("mods/multiplayer"))) { if (!fs::exists(GetGamePath() / beammp_wide("mods/multiplayer"))) {
fs::create_directories(GetGamePath() / beammp_wide("mods/multiplayer")); fs::create_directories(GetGamePath() / beammp_wide("mods/multiplayer"));