From 25db163347205d95fbcd888a86147aee03ecaac2 Mon Sep 17 00:00:00 2001
From: Stenzek <stenzek@gmail.com>
Date: Fri, 8 Mar 2024 04:10:13 +1000
Subject: [PATCH] System: Fix incorrect save state screenshot size

---
 src/core/system.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/core/system.cpp b/src/core/system.cpp
index dff56bb56..9965d9399 100644
--- a/src/core/system.cpp
+++ b/src/core/system.cpp
@@ -2471,7 +2471,7 @@ bool System::SaveStateToStream(ByteStream* state, u32 screenshot_size /* = 256 *
         header.offset_to_screenshot = static_cast<u32>(state->GetPosition());
         header.screenshot_width = screenshot_width;
         header.screenshot_height = screenshot_height;
-        header.screenshot_size = static_cast<u32>(screenshot_buffer.size());
+        header.screenshot_size = static_cast<u32>(screenshot_buffer.size() * sizeof(u32));
         if (!state->Write2(screenshot_buffer.data(), header.screenshot_size))
           return false;
       }
@@ -4480,7 +4480,8 @@ std::optional<ExtendedSaveStateInfo> System::InternalGetExtendedSaveStateInfo(By
       std::string().swap(ssi.media_path);
   }
 
-  if (header.screenshot_width > 0 && header.screenshot_height > 0 && header.screenshot_size > 0 &&
+  if (header.screenshot_width > 0 && header.screenshot_height > 0 &&
+      header.screenshot_size >= (header.screenshot_width * header.screenshot_height * sizeof(u32)) &&
       (static_cast<u64>(header.offset_to_screenshot) + static_cast<u64>(header.screenshot_size)) <= stream->GetSize())
   {
     stream->SeekAbsolute(header.offset_to_screenshot);