mirror of
https://github.com/BeamMP/BeamMP-Launcher.git
synced 2026-04-02 22:06:29 +00:00
Check hash with regex
This commit is contained in:
@@ -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"));
|
||||||
|
|||||||
Reference in New Issue
Block a user