From 7b05833e969475eb14333b305a1502e13faec23d Mon Sep 17 00:00:00 2001 From: zoff99 Date: Tue, 9 Jan 2024 22:02:54 +0100 Subject: [PATCH] feat: allow the large custom NGC packets to be handled also by the client --- toxcore/group_chats.c | 10 ++++++++-- toxcore/group_common.h | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/toxcore/group_chats.c b/toxcore/group_chats.c index 6dd942ba0ff..ef4bda03453 100644 --- a/toxcore/group_chats.c +++ b/toxcore/group_chats.c @@ -5117,8 +5117,14 @@ non_null(1, 2, 3, 4) nullable(7) static int handle_gc_custom_packet(const GC_Session *c, const GC_Chat *chat, const GC_Peer *peer, const uint8_t *data, uint16_t length, bool lossless, void *userdata) { - if (!custom_gc_packet_length_is_valid(length, lossless)) { - return -1; + if (lossless) { + if (length > MAX_GC_CUSTOM_LOSSLESS_INCOMING_ASSEMBLED_PACKET_SIZE) { + return -1; + } + } else { + if (length > MAX_GC_CUSTOM_LOSSY_PACKET_SIZE) { + return -1; + } } if (data == nullptr || length == 0) { diff --git a/toxcore/group_common.h b/toxcore/group_common.h index dbbd7441d10..e0af0fb9a01 100644 --- a/toxcore/group_common.h +++ b/toxcore/group_common.h @@ -45,6 +45,12 @@ /* Max size of a complete encrypted packet including headers. */ #define MAX_GC_PACKET_SIZE (MAX_GC_PACKET_CHUNK_SIZE * 100) +/* Allow incoming NGC custom packets to be up to the total max size of MAX_GC_PACKET_SIZE. + * The data itself can only be less than that because of NGC header overhead + */ +#define MAX_GC_CUSTOM_LOSSLESS_INCOMING_ASSEMBLED_PACKET_SIZE MAX_GC_PACKET_SIZE + + /* Max number of messages to store in the send/recv arrays */ #define GCC_BUFFER_SIZE 8192