From be5ea593bcebaa1df41fd695730fa8c58c94feef Mon Sep 17 00:00:00 2001 From: "seer-by-sentry[bot]" <157164994+seer-by-sentry[bot]@users.noreply.github.com> Date: Sat, 10 Jan 2026 20:43:03 +0000 Subject: [PATCH] Add empty signal payload validation --- .../GameNetwork/GeneralsOnline/NetworkMesh.cpp | 7 +++++++ .../GeneralsOnline/OnlineServices_RoomsInterface.cpp | 12 ++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/NetworkMesh.cpp b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/NetworkMesh.cpp index 8d5319cf0c3..da4a053b314 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/NetworkMesh.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/NetworkMesh.cpp @@ -484,6 +484,13 @@ class CSignalingClient : public ISignalingClient std::vector signalData = pendingSignals.front(); pendingSignals.pop(); + // Validate payload is not empty to prevent crashes in OpenSSL CMP validation + if (signalData.empty()) + { + NetworkLog(ELogVerbosity::LOG_RELEASE, "[SIGNAL] Warning: Skipping empty signal data"); + continue; + } + // Setup a context object that can respond if this signal is a connection request. struct Context : ISteamNetworkingSignalingRecvContext { diff --git a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_RoomsInterface.cpp b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_RoomsInterface.cpp index 11f938ecf16..a24b75f855a 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_RoomsInterface.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_RoomsInterface.cpp @@ -961,7 +961,15 @@ void WebSocket::Tick() { NetworkLog(ELogVerbosity::LOG_RELEASE, "[SIGNAL] Signal User: %lld!", signalData.target_user_id); NetworkLog(ELogVerbosity::LOG_RELEASE, "[SIGNAL] Signal Payload Size: %d!", (int)signalData.payload.size()); - m_pendingSignals.push(signalData.payload); + // Validate payload is not empty to prevent crashes in OpenSSL CMP validation + if (signalData.payload.size() > 0) + { + m_pendingSignals.push(signalData.payload); + } + else + { + NetworkLog(ELogVerbosity::LOG_RELEASE, "[SIGNAL] Warning: Ignoring empty signal payload from user %lld", signalData.target_user_id); + } } } break; @@ -1361,4 +1369,4 @@ void NGMP_OnlineServices_RoomsInterface::OnRosterUpdated(std::vector