From 85a89eb4200e028b601b1a950eba4479c6018229 Mon Sep 17 00:00:00 2001 From: Dentomologist Date: Fri, 5 Sep 2025 17:23:39 -0700 Subject: [PATCH] RetroAchievements: Avoid uninitialized memory access Avoid creating and then destroying a leaderboard list when game is null, as doing so causes an access to uninitialized memory due to a bug in rcheevos. This can be triggered by starting a game with an invalid or expired login token. --- Source/Core/Core/AchievementManager.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp index aa8f0b1321..a361d5bf1b 100644 --- a/Source/Core/Core/AchievementManager.cpp +++ b/Source/Core/Core/AchievementManager.cpp @@ -1027,6 +1027,9 @@ void AchievementManager::LoadGameCallback(int result, const char* error_message, OSD::Color::RED); } + if (game == nullptr) + return; + rc_client_set_read_memory_function(instance.m_client, MemoryPeeker); instance.FetchGameBadges(); instance.m_system.store(&Core::System::GetInstance(), std::memory_order_release);