summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2026-05-30 17:00:36 +0200
committerJosJuice <josjuice@gmail.com>2026-06-20 15:15:36 +0200
commit5aed26fb11fae0f58af6dce6c196f31f20598b3a (patch)
treef96fa230a93e8e046f49e5b0641419452b3e0731
parent747e1e0d92acedf0c0d49e4d6c7b2bcec4d9f301 (diff)
NetPlay: Fix chunked data buffer overflow
Reported by MrSynAckster.
-rw-r--r--Source/Core/Core/NetPlayCommon.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/Source/Core/Core/NetPlayCommon.cpp b/Source/Core/Core/NetPlayCommon.cpp
index f1a580cf09..89ec2864a1 100644
--- a/Source/Core/Core/NetPlayCommon.cpp
+++ b/Source/Core/Core/NetPlayCommon.cpp
@@ -197,6 +197,12 @@ bool DecompressPacketIntoFile(sf::Packet& packet, const std::string& file_path)
if (!cur_len)
break; // We reached the end of the data stream
+ if (cur_len > in_buffer.size())
+ {
+ PanicAlertFmt("LZO error - input is too large");
+ return false;
+ }
+
for (size_t j = 0; j < cur_len; j++)
{
packet >> in_buffer[j];
@@ -281,6 +287,12 @@ std::optional<std::vector<u8>> DecompressPacketIntoBuffer(sf::Packet& packet)
if (!cur_len)
break; // We reached the end of the data stream
+ if (cur_len > in_buffer.size())
+ {
+ PanicAlertFmt("LZO error - input is too large");
+ return {};
+ }
+
for (size_t j = 0; j < cur_len; j++)
{
packet >> in_buffer[j];