summaryrefslogtreecommitdiff
path: root/toxcore
diff options
context:
space:
mode:
Diffstat (limited to 'toxcore')
-rw-r--r--toxcore/onion.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/toxcore/onion.c b/toxcore/onion.c
index cec178b9..2bed5821 100644
--- a/toxcore/onion.c
+++ b/toxcore/onion.c
@@ -438,6 +438,15 @@ static int handle_send_2(void *object, IP_Port source, const uint8_t *packet, ui
438 if (len != length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + RETURN_2 + crypto_box_MACBYTES)) 438 if (len != length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + RETURN_2 + crypto_box_MACBYTES))
439 return 1; 439 return 1;
440 440
441 if (len <= SIZE_IPPORT) {
442 return 1;
443 }
444
445 if (plain[SIZE_IPPORT] != NET_PACKET_ANNOUNCE_REQUEST &&
446 plain[SIZE_IPPORT] != NET_PACKET_ONION_DATA_REQUEST) {
447 return 1;
448 }
449
441 IP_Port send_to; 450 IP_Port send_to;
442 451
443 if (ipport_unpack(&send_to, plain, len, 0) == -1) 452 if (ipport_unpack(&send_to, plain, len, 0) == -1)
@@ -476,6 +485,11 @@ static int handle_recv_3(void *object, IP_Port source, const uint8_t *packet, ui
476 if (length <= 1 + RETURN_3) 485 if (length <= 1 + RETURN_3)
477 return 1; 486 return 1;
478 487
488 if (packet[1 + RETURN_3] != NET_PACKET_ANNOUNCE_RESPONSE &&
489 packet[1 + RETURN_3] != NET_PACKET_ONION_DATA_RESPONSE) {
490 return 1;
491 }
492
479 change_symmetric_key(onion); 493 change_symmetric_key(onion);
480 494
481 uint8_t plain[SIZE_IPPORT + RETURN_2]; 495 uint8_t plain[SIZE_IPPORT + RETURN_2];
@@ -512,6 +526,11 @@ static int handle_recv_2(void *object, IP_Port source, const uint8_t *packet, ui
512 if (length <= 1 + RETURN_2) 526 if (length <= 1 + RETURN_2)
513 return 1; 527 return 1;
514 528
529 if (packet[1 + RETURN_2] != NET_PACKET_ANNOUNCE_RESPONSE &&
530 packet[1 + RETURN_2] != NET_PACKET_ONION_DATA_RESPONSE) {
531 return 1;
532 }
533
515 change_symmetric_key(onion); 534 change_symmetric_key(onion);
516 535
517 uint8_t plain[SIZE_IPPORT + RETURN_1]; 536 uint8_t plain[SIZE_IPPORT + RETURN_1];
@@ -548,6 +567,11 @@ static int handle_recv_1(void *object, IP_Port source, const uint8_t *packet, ui
548 if (length <= 1 + RETURN_1) 567 if (length <= 1 + RETURN_1)
549 return 1; 568 return 1;
550 569
570 if (packet[1 + RETURN_1] != NET_PACKET_ANNOUNCE_RESPONSE &&
571 packet[1 + RETURN_1] != NET_PACKET_ONION_DATA_RESPONSE) {
572 return 1;
573 }
574
551 change_symmetric_key(onion); 575 change_symmetric_key(onion);
552 576
553 uint8_t plain[SIZE_IPPORT]; 577 uint8_t plain[SIZE_IPPORT];