diff options
| author | JosJuice <josjuice@gmail.com> | 2026-05-30 17:00:36 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2026-06-20 15:15:36 +0200 |
| commit | 5aed26fb11fae0f58af6dce6c196f31f20598b3a (patch) | |
| tree | f96fa230a93e8e046f49e5b0641419452b3e0731 | |
| parent | 747e1e0d92acedf0c0d49e4d6c7b2bcec4d9f301 (diff) | |
NetPlay: Fix chunked data buffer overflow
Reported by MrSynAckster.
| -rw-r--r-- | Source/Core/Core/NetPlayCommon.cpp | 12 |
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]; |
