summaryrefslogtreecommitdiff
path: root/toxcore/Messenger.c
diff options
context:
space:
mode:
Diffstat (limited to 'toxcore/Messenger.c')
-rw-r--r--toxcore/Messenger.c35
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 @@
28static void set_friend_status(Messenger *m, int friendnumber, uint8_t status); 28static void set_friend_status(Messenger *m, int friendnumber, uint8_t status);
29static int write_cryptpacket_id(Messenger *m, int friendnumber, uint8_t packet_id, uint8_t *data, uint32_t length); 29static 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
32static uint8_t friend_is_valid(int friendnumber, Messenger *m) { return friendnumber < 0 || (uint32_t)friendnumber >= m->numfriends; } 32static 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 */
80int getclient_id(Messenger *m, int friend_id, uint8_t *client_id) 83int 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 */
250int m_delfriend(Messenger *m, int friendnumber) 253int 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 */
280int m_friendstatus(Messenger *m, int friendnumber) 283int 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 */
292uint32_t m_sendmessage(Messenger *m, int friendnumber, uint8_t *message, uint32_t length) 295uint32_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 */
345static int setfriendname(Messenger *m, int friendnumber, uint8_t *name) 348static 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 */
399int getname(Messenger *m, int friendnumber, uint8_t *name) 402int 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 */
442int m_get_statusmessage_size(Messenger *m, int friendnumber) 445int 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 */
453int m_copy_statusmessage(Messenger *m, int friendnumber, uint8_t *buf, uint32_t maxlen) 456int 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
470USERSTATUS m_get_userstatus(Messenger *m, int friendnumber) 473USERSTATUS 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
506static int set_friend_statusmessage(Messenger *m, int friendnumber, uint8_t *status, uint16_t length) 509static 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
610int write_cryptpacket_id(Messenger *m, int friendnumber, uint8_t packet_id, uint8_t *data, uint32_t length) 613int 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));