From fb168f928346bba7e06bf2ce1475036a132a67c0 Mon Sep 17 00:00:00 2001 From: Collecting Date: Sat, 17 Jan 2026 02:06:48 +0000 Subject: [PATCH] fix: Corrupted Cache Cleanup Signed-off-by: Collecting --- src/video_core/shader_environment.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/video_core/shader_environment.cpp b/src/video_core/shader_environment.cpp index 4aea915a9..18ae76420 100644 --- a/src/video_core/shader_environment.cpp +++ b/src/video_core/shader_environment.cpp @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 citron Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #include @@ -692,10 +693,17 @@ void LoadPipelines( } u32 num_envs{}; file.read(reinterpret_cast(&num_envs), sizeof(num_envs)); + + if (num_envs == 0 || num_envs > 64) { + LOG_ERROR(Common_Filesystem, "Corrupted shader cache detected: num_envs={}", num_envs); + throw std::ios_base::failure("Corrupted num_envs"); + } + std::vector envs(num_envs); for (FileEnvironment& env : envs) { env.Deserialize(file); } + if (envs.front().ShaderStage() == Shader::Stage::Compute) { load_compute(file, std::move(envs.front())); } else {