diff options
Diffstat (limited to 'toxcore/Messenger.c')
-rw-r--r-- | toxcore/Messenger.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/toxcore/Messenger.c b/toxcore/Messenger.c index 33c37b06..2bbeed41 100644 --- a/toxcore/Messenger.c +++ b/toxcore/Messenger.c | |||
@@ -28,8 +28,11 @@ | |||
28 | static void set_friend_status(Messenger *m, int friendnumber, uint8_t status); | 28 | static void set_friend_status(Messenger *m, int friendnumber, uint8_t status); |
29 | static int write_cryptpacket_id(Messenger *m, int friendnumber, uint8_t packet_id, uint8_t *data, uint32_t length); | 29 | static int write_cryptpacket_id(Messenger *m, int friendnumber, uint8_t packet_id, uint8_t *data, uint32_t length); |
30 | 30 | ||
31 | // friend_is_valid determines if the friendnumber passed is valid in the Messenger object | 31 | // friend_not_valid determines if the friendnumber passed is valid in the Messenger object |
32 | static uint8_t friend_is_valid(int friendnumber, Messenger *m) { return friendnumber < 0 || (uint32_t)friendnumber >= m->numfriends; } | 32 | static uint8_t friend_not_valid(Messenger *m, int friendnumber) |
33 | { | ||
34 | return (unsigned int)friendnumber >= m->numfriends; | ||
35 | } | ||
33 | 36 | ||
34 | /* return 1 if we are online. | 37 | /* return 1 if we are online. |
35 | * return 0 if we are offline. | 38 | * return 0 if we are offline. |
@@ -79,7 +82,7 @@ int getfriend_id(Messenger *m, uint8_t *client_id) | |||
79 | */ | 82 | */ |
80 | int getclient_id(Messenger *m, int friend_id, uint8_t *client_id) | 83 | int getclient_id(Messenger *m, int friend_id, uint8_t *client_id) |
81 | { | 84 | { |
82 | if (friend_is_valid(friend_id,m)) | 85 | if (friend_not_valid(m, friend_id)) |
83 | return -1; | 86 | return -1; |
84 | 87 | ||
85 | if (m->friendlist[friend_id].status > 0) { | 88 | if (m->friendlist[friend_id].status > 0) { |
@@ -249,7 +252,7 @@ int m_addfriend_norequest(Messenger *m, uint8_t *client_id) | |||
249 | */ | 252 | */ |
250 | int m_delfriend(Messenger *m, int friendnumber) | 253 | int m_delfriend(Messenger *m, int friendnumber) |
251 | { | 254 | { |
252 | if (friend_is_valid(friendnumber,m)) | 255 | if (friend_not_valid(m, friendnumber)) |
253 | return -1; | 256 | return -1; |
254 | 257 | ||
255 | DHT_delfriend(m->dht, m->friendlist[friendnumber].client_id); | 258 | DHT_delfriend(m->dht, m->friendlist[friendnumber].client_id); |
@@ -279,7 +282,7 @@ int m_delfriend(Messenger *m, int friendnumber) | |||
279 | */ | 282 | */ |
280 | int m_friendstatus(Messenger *m, int friendnumber) | 283 | int m_friendstatus(Messenger *m, int friendnumber) |
281 | { | 284 | { |
282 | if (friend_is_valid(friendnumber,m)) | 285 | if (friend_not_valid(m, friendnumber)) |
283 | return NOFRIEND; | 286 | return NOFRIEND; |
284 | 287 | ||
285 | return m->friendlist[friendnumber].status; | 288 | return m->friendlist[friendnumber].status; |
@@ -291,7 +294,7 @@ int m_friendstatus(Messenger *m, int friendnumber) | |||
291 | */ | 294 | */ |
292 | uint32_t m_sendmessage(Messenger *m, int friendnumber, uint8_t *message, uint32_t length) | 295 | uint32_t m_sendmessage(Messenger *m, int friendnumber, uint8_t *message, uint32_t length) |
293 | { | 296 | { |
294 | if (friend_is_valid(friendnumber,m)) | 297 | if (friend_not_valid(m, friendnumber)) |
295 | return 0; | 298 | return 0; |
296 | 299 | ||
297 | uint32_t msgid = ++m->friendlist[friendnumber].message_id; | 300 | uint32_t msgid = ++m->friendlist[friendnumber].message_id; |
@@ -344,7 +347,7 @@ static int m_sendname(Messenger *m, int friendnumber, uint8_t *name, uint16_t le | |||
344 | */ | 347 | */ |
345 | static int setfriendname(Messenger *m, int friendnumber, uint8_t *name) | 348 | static int setfriendname(Messenger *m, int friendnumber, uint8_t *name) |
346 | { | 349 | { |
347 | if (friend_is_valid(friendnumber,m)) | 350 | if (friend_not_valid(m, friendnumber)) |
348 | return -1; | 351 | return -1; |
349 | 352 | ||
350 | memcpy(m->friendlist[friendnumber].name, name, MAX_NAME_LENGTH); | 353 | memcpy(m->friendlist[friendnumber].name, name, MAX_NAME_LENGTH); |
@@ -398,7 +401,7 @@ uint16_t getself_name(Messenger *m, uint8_t *name, uint16_t nlen) | |||
398 | */ | 401 | */ |
399 | int getname(Messenger *m, int friendnumber, uint8_t *name) | 402 | int getname(Messenger *m, int friendnumber, uint8_t *name) |
400 | { | 403 | { |
401 | if (friend_is_valid(friendnumber,m)) | 404 | if (friend_not_valid(m, friendnumber)) |
402 | return -1; | 405 | return -1; |
403 | 406 | ||
404 | memcpy(name, m->friendlist[friendnumber].name, MAX_NAME_LENGTH); | 407 | memcpy(name, m->friendlist[friendnumber].name, MAX_NAME_LENGTH); |
@@ -441,7 +444,7 @@ int m_set_userstatus(Messenger *m, USERSTATUS status) | |||
441 | */ | 444 | */ |
442 | int m_get_statusmessage_size(Messenger *m, int friendnumber) | 445 | int m_get_statusmessage_size(Messenger *m, int friendnumber) |
443 | { | 446 | { |
444 | if (friend_is_valid(friendnumber,m)) | 447 | if (friend_not_valid(m, friendnumber)) |
445 | return -1; | 448 | return -1; |
446 | 449 | ||
447 | return m->friendlist[friendnumber].statusmessage_length; | 450 | return m->friendlist[friendnumber].statusmessage_length; |
@@ -452,7 +455,7 @@ int m_get_statusmessage_size(Messenger *m, int friendnumber) | |||
452 | */ | 455 | */ |
453 | int m_copy_statusmessage(Messenger *m, int friendnumber, uint8_t *buf, uint32_t maxlen) | 456 | int m_copy_statusmessage(Messenger *m, int friendnumber, uint8_t *buf, uint32_t maxlen) |
454 | { | 457 | { |
455 | if (friend_is_valid(friendnumber,m)) | 458 | if (friend_not_valid(m, friendnumber)) |
456 | return -1; | 459 | return -1; |
457 | 460 | ||
458 | memset(buf, 0, maxlen); | 461 | memset(buf, 0, maxlen); |
@@ -469,7 +472,7 @@ int m_copy_self_statusmessage(Messenger *m, uint8_t *buf, uint32_t maxlen) | |||
469 | 472 | ||
470 | USERSTATUS m_get_userstatus(Messenger *m, int friendnumber) | 473 | USERSTATUS m_get_userstatus(Messenger *m, int friendnumber) |
471 | { | 474 | { |
472 | if (friend_is_valid(friendnumber,m)) | 475 | if (friend_not_valid(m, friendnumber)) |
473 | return USERSTATUS_INVALID; | 476 | return USERSTATUS_INVALID; |
474 | 477 | ||
475 | USERSTATUS status = m->friendlist[friendnumber].userstatus; | 478 | USERSTATUS status = m->friendlist[friendnumber].userstatus; |
@@ -505,7 +508,7 @@ static int send_ping(Messenger *m, int friendnumber) | |||
505 | 508 | ||
506 | static int set_friend_statusmessage(Messenger *m, int friendnumber, uint8_t *status, uint16_t length) | 509 | static int set_friend_statusmessage(Messenger *m, int friendnumber, uint8_t *status, uint16_t length) |
507 | { | 510 | { |
508 | if (friend_is_valid(friendnumber,m)) | 511 | if (friend_not_valid(m, friendnumber)) |
509 | return -1; | 512 | return -1; |
510 | 513 | ||
511 | uint8_t *newstatus = calloc(length, 1); | 514 | uint8_t *newstatus = calloc(length, 1); |
@@ -527,7 +530,7 @@ void m_set_sends_receipts(Messenger *m, int friendnumber, int yesno) | |||
527 | if (yesno != 0 || yesno != 1) | 530 | if (yesno != 0 || yesno != 1) |
528 | return; | 531 | return; |
529 | 532 | ||
530 | if (friend_is_valid(friendnumber,m)) | 533 | if (friend_not_valid(m, friendnumber)) |
531 | return; | 534 | return; |
532 | 535 | ||
533 | m->friendlist[friendnumber].receives_read_receipts = yesno; | 536 | m->friendlist[friendnumber].receives_read_receipts = yesno; |
@@ -609,7 +612,7 @@ void set_friend_status(Messenger *m, int friendnumber, uint8_t status) | |||
609 | 612 | ||
610 | int write_cryptpacket_id(Messenger *m, int friendnumber, uint8_t packet_id, uint8_t *data, uint32_t length) | 613 | int write_cryptpacket_id(Messenger *m, int friendnumber, uint8_t packet_id, uint8_t *data, uint32_t length) |
611 | { | 614 | { |
612 | if (friend_is_valid(friendnumber,m)) | 615 | if (friend_not_valid(m, friendnumber)) |
613 | return 0; | 616 | return 0; |
614 | 617 | ||
615 | if (length >= MAX_DATA_SIZE || m->friendlist[friendnumber].status != FRIEND_ONLINE) | 618 | if (length >= MAX_DATA_SIZE || m->friendlist[friendnumber].status != FRIEND_ONLINE) |
@@ -780,7 +783,7 @@ void doFriends(Messenger *m) | |||
780 | len = read_cryptpacket(m->net_crypto, m->friendlist[i].crypt_connection_id, temp); | 783 | len = read_cryptpacket(m->net_crypto, m->friendlist[i].crypt_connection_id, temp); |
781 | uint8_t packet_id = temp[0]; | 784 | uint8_t packet_id = temp[0]; |
782 | uint8_t *data = temp + 1; | 785 | uint8_t *data = temp + 1; |
783 | int data_length = len - 1; | 786 | uint32_t data_length = len - 1; |
784 | 787 | ||
785 | if (len > 0) { | 788 | if (len > 0) { |
786 | switch (packet_id) { | 789 | switch (packet_id) { |
@@ -856,7 +859,7 @@ void doFriends(Messenger *m) | |||
856 | case PACKET_ID_RECEIPT: { | 859 | case PACKET_ID_RECEIPT: { |
857 | uint32_t msgid; | 860 | uint32_t msgid; |
858 | 861 | ||
859 | if (data_length < 0 || (uint32_t)data_length < sizeof(msgid)) | 862 | if (data_length < sizeof(msgid)) |
860 | break; | 863 | break; |
861 | 864 | ||
862 | memcpy(&msgid, data, sizeof(msgid)); | 865 | memcpy(&msgid, data, sizeof(msgid)); |