Skip to content

Commit d6c39c1

Browse files
committed
fix: actually give the larger incoming NGC custom packets via API to the client
1 parent 7cfe35d commit d6c39c1

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1608abb52cd16775216d01d06569e6437d86ed11e9fc8dc6dc9c1c28668ccd8b /usr/local/bin/tox-bootstrapd
1+
74c1b6175dc051e02c170ec8458c17fad3429534b2101c4ca7646ee645306cd9 /usr/local/bin/tox-bootstrapd

toxcore/group_chats.c

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,11 @@ typedef enum Group_Sync_Flags {
156156
GF_STATE = (1 << 2), // 4
157157
} Group_Sync_Flags;
158158

159+
typedef enum Group_CustomPkts_Direction {
160+
GC_CUSTOMPKTS_SENDING = (1 << 0), // 1
161+
GC_CUSTOMPKTS_RECEIVING = (1 << 1), // 2
162+
} Group_CustomPkts_Direction;
163+
159164
non_null() static bool self_gc_is_founder(const GC_Chat *chat);
160165
non_null() static bool group_number_valid(const GC_Session *c, int group_number);
161166
non_null() static int peer_update(const GC_Chat *chat, const GC_Peer *peer, uint32_t peer_number);
@@ -4906,11 +4911,17 @@ static int handle_gc_private_message(const GC_Session *c, const GC_Chat *chat, c
49064911
}
49074912

49084913
/** @brief Returns false if a custom packet is too large. */
4909-
static bool custom_gc_packet_length_is_valid(uint16_t length, bool lossless)
4914+
static bool custom_gc_packet_length_is_valid(uint16_t length, bool lossless, Group_CustomPkts_Direction pkt_direction)
49104915
{
49114916
if (lossless) {
4912-
if (length > MAX_GC_CUSTOM_LOSSLESS_PACKET_SIZE) {
4913-
return false;
4917+
if (pkt_direction == GC_CUSTOMPKTS_SENDING) {
4918+
if (length > MAX_GC_CUSTOM_LOSSLESS_PACKET_SIZE) {
4919+
return false;
4920+
}
4921+
} else {
4922+
if (length > MAX_GC_PACKET_SIZE) {
4923+
return false;
4924+
}
49144925
}
49154926
} else {
49164927
if (length > MAX_GC_CUSTOM_LOSSY_PACKET_SIZE) {
@@ -4924,7 +4935,7 @@ static bool custom_gc_packet_length_is_valid(uint16_t length, bool lossless)
49244935
int gc_send_custom_private_packet(const GC_Chat *chat, bool lossless, uint32_t peer_id, const uint8_t *message,
49254936
uint16_t length)
49264937
{
4927-
if (!custom_gc_packet_length_is_valid(length, lossless)) {
4938+
if (!custom_gc_packet_length_is_valid(length, lossless, GC_CUSTOMPKTS_SENDING)) {
49284939
return -1;
49294940
}
49304941

@@ -4966,7 +4977,7 @@ non_null(1, 2, 3, 4) nullable(7)
49664977
static int handle_gc_custom_private_packet(const GC_Session *c, const GC_Chat *chat, const GC_Peer *peer,
49674978
const uint8_t *data, uint16_t length, bool lossless, void *userdata)
49684979
{
4969-
if (!custom_gc_packet_length_is_valid(length, lossless)) {
4980+
if (!custom_gc_packet_length_is_valid(length, lossless, GC_CUSTOMPKTS_RECEIVING)) {
49704981
return -1;
49714982
}
49724983

@@ -4987,7 +4998,7 @@ static int handle_gc_custom_private_packet(const GC_Session *c, const GC_Chat *c
49874998

49884999
int gc_send_custom_packet(const GC_Chat *chat, bool lossless, const uint8_t *data, uint16_t length)
49895000
{
4990-
if (!custom_gc_packet_length_is_valid(length, lossless)) {
5001+
if (!custom_gc_packet_length_is_valid(length, lossless, GC_CUSTOMPKTS_SENDING)) {
49915002
return -1;
49925003
}
49935004

@@ -5017,7 +5028,7 @@ non_null(1, 2, 3, 4) nullable(7)
50175028
static int handle_gc_custom_packet(const GC_Session *c, const GC_Chat *chat, const GC_Peer *peer, const uint8_t *data,
50185029
uint16_t length, bool lossless, void *userdata)
50195030
{
5020-
if (!custom_gc_packet_length_is_valid(length, lossless)) {
5031+
if (!custom_gc_packet_length_is_valid(length, lossless, GC_CUSTOMPKTS_RECEIVING)) {
50215032
return -1;
50225033
}
50235034

@@ -6057,6 +6068,7 @@ static bool handle_gc_lossless_packet(const GC_Session *c, GC_Chat *chat, const
60576068
uint8_t packet_type;
60586069
uint64_t message_id;
60596070

6071+
60606072
const int len = group_packet_unwrap(chat->log, gconn, data, &message_id, &packet_type, packet, length);
60616073

60626074
if (len < 0) {

0 commit comments

Comments
 (0)