From 1fb75b66dd9ac257f898f6b131968f596b275bbe Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Wed, 12 Aug 2026 18:17:51 -0500 Subject: [PATCH] Limit maximum SDK packet size to 8MB --- NetworkClient.cpp | 7 ++++++- NetworkProtocol.h | 5 +++++ NetworkServer.cpp | 7 ++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/NetworkClient.cpp b/NetworkClient.cpp index 40267925b..7288f3c33 100644 --- a/NetworkClient.cpp +++ b/NetworkClient.cpp @@ -2021,7 +2021,12 @@ void NetworkClient::ListenThreadFunction() /*-------------------------------------------------*\ | Header received, now receive the data | \*-------------------------------------------------*/ - if(header.pkt_size > 0) + if(header.pkt_size > OPENRGB_SDK_MAX_PACKET_SIZE) + { + LOG_ERROR("[%s] received too large packet, closing listener", NETWORKCLIENT); + goto listen_done; + } + else if(header.pkt_size > 0) { bytes_read = 0; diff --git a/NetworkProtocol.h b/NetworkProtocol.h index bf8fb34d8..d3109d8c0 100644 --- a/NetworkProtocol.h +++ b/NetworkProtocol.h @@ -32,6 +32,11 @@ \*-----------------------------------------------------*/ #define OPENRGB_SDK_HOST "127.0.0.1" +/*-----------------------------------------------------*\ +| Default max packet size is 8MB | +\*-----------------------------------------------------*/ +#define OPENRGB_SDK_MAX_PACKET_SIZE (1024 * 1024 * 8) + /*-----------------------------------------------------*\ | Default OpenRGB SDK port is 6742 | | This is "ORGB" on a phone keypad | diff --git a/NetworkServer.cpp b/NetworkServer.cpp index de6f9e07b..e1068d4f4 100644 --- a/NetworkServer.cpp +++ b/NetworkServer.cpp @@ -1269,7 +1269,12 @@ void NetworkServer::ListenThreadFunction(NetworkClientInfo* client_info) | Header received, now receive the data | \*-------------------------------------------------*/ bytes_read = 0; - if(header.pkt_size > 0) + if(header.pkt_size > OPENRGB_SDK_MAX_PACKET_SIZE) + { + LOG_ERROR("[%s] received too large packet, closing listener", NETWORKSERVER); + goto listen_done; + } + else if(header.pkt_size > 0) { data = new unsigned char[header.pkt_size];