From 0a4c3d7e2e080dafd66d25f7a5806b89f7be1bcf Mon Sep 17 00:00:00 2001 From: "Coren[m]" Date: Thu, 24 Oct 2013 22:32:28 +0200 Subject: Move unix_time(), id_cpy()/id_eq(), is_timeout() to util.* unix_time(): - returns local value for current epoch - value is updated explicitly with unix_time_update() called at new_DHT()/doMessenger()/do_DHT() is_timeout(): - uses the local value for current epoch id_cpy()/id_eq() => id_copy()/id_equal(): - centralized duplicate definitions - replaced (most) memcpy()/memcmp() of (*, *, CLIENT_ID_SIZE) with id_copy()/id_equal() --- toxcore/net_crypto.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'toxcore/net_crypto.c') diff --git a/toxcore/net_crypto.c b/toxcore/net_crypto.c index b7e3ced7..0a7ff665 100644 --- a/toxcore/net_crypto.c +++ b/toxcore/net_crypto.c @@ -29,6 +29,7 @@ #endif #include "net_crypto.h" +#include "util.h" #define CONN_NO_CONNECTION 0 #define CONN_HANDSHAKE_SENT 1 @@ -268,8 +269,8 @@ int create_request(uint8_t *send_public_key, uint8_t *send_secret_key, uint8_t * return -1; packet[0] = NET_PACKET_CRYPTO; - memcpy(packet + 1, recv_public_key, crypto_box_PUBLICKEYBYTES); - memcpy(packet + 1 + crypto_box_PUBLICKEYBYTES, send_public_key, crypto_box_PUBLICKEYBYTES); + id_copy(packet + 1, recv_public_key); + id_copy(packet + 1 + crypto_box_PUBLICKEYBYTES, send_public_key); memcpy(packet + 1 + crypto_box_PUBLICKEYBYTES * 2, nonce, crypto_box_NONCEBYTES); return len + 1 + crypto_box_PUBLICKEYBYTES * 2 + crypto_box_NONCEBYTES; @@ -286,8 +287,8 @@ int handle_request(uint8_t *self_public_key, uint8_t *self_secret_key, uint8_t * { if (length > crypto_box_PUBLICKEYBYTES * 2 + crypto_box_NONCEBYTES + 1 + ENCRYPTION_PADDING && length <= MAX_DATA_SIZE) { - if (memcmp(packet + 1, self_public_key, crypto_box_PUBLICKEYBYTES) == 0) { - memcpy(public_key, packet + 1 + crypto_box_PUBLICKEYBYTES, crypto_box_PUBLICKEYBYTES); + if (id_equal(packet + 1, self_public_key)) { + id_copy(public_key, packet + 1 + crypto_box_PUBLICKEYBYTES); uint8_t nonce[crypto_box_NONCEBYTES]; uint8_t temp[MAX_DATA_SIZE]; memcpy(nonce, packet + 1 + crypto_box_PUBLICKEYBYTES * 2, crypto_box_NONCEBYTES); @@ -323,7 +324,7 @@ static int cryptopacket_handle(void *object, IP_Port source, uint8_t *packet, ui length > MAX_DATA_SIZE + ENCRYPTION_PADDING) return 1; - if (memcmp(packet + 1, dht->c->self_public_key, crypto_box_PUBLICKEYBYTES) == 0) { // Check if request is for us. + if (id_equal(packet + 1, dht->c->self_public_key)) { // Check if request is for us. uint8_t public_key[crypto_box_PUBLICKEYBYTES]; uint8_t data[MAX_DATA_SIZE]; uint8_t number; @@ -361,7 +362,7 @@ static int send_cryptohandshake(Net_Crypto *c, int connection_id, uint8_t *publi new_nonce(nonce); memcpy(temp, secret_nonce, crypto_box_NONCEBYTES); - memcpy(temp + crypto_box_NONCEBYTES, session_key, crypto_box_PUBLICKEYBYTES); + id_copy(temp + crypto_box_NONCEBYTES, session_key); int len = encrypt_data(public_key, c->self_secret_key, nonce, temp, crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES, 1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES + temp_data); @@ -370,7 +371,7 @@ static int send_cryptohandshake(Net_Crypto *c, int connection_id, uint8_t *publi return 0; temp_data[0] = 2; - memcpy(temp_data + 1, c->self_public_key, crypto_box_PUBLICKEYBYTES); + id_copy(temp_data + 1, c->self_public_key); memcpy(temp_data + 1 + crypto_box_PUBLICKEYBYTES, nonce, crypto_box_NONCEBYTES); return write_packet(c->lossless_udp, connection_id, temp_data, len + 1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES); @@ -396,7 +397,7 @@ static int handle_cryptohandshake(Net_Crypto *c, uint8_t *public_key, uint8_t *s uint8_t temp[crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES]; - memcpy(public_key, data + 1, crypto_box_PUBLICKEYBYTES); + id_copy(public_key, data + 1); int len = decrypt_data(public_key, c->self_secret_key, data + 1 + crypto_box_PUBLICKEYBYTES, data + 1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES, @@ -406,7 +407,7 @@ static int handle_cryptohandshake(Net_Crypto *c, uint8_t *public_key, uint8_t *s return 0; memcpy(secret_nonce, temp, crypto_box_NONCEBYTES); - memcpy(session_key, temp + crypto_box_NONCEBYTES, crypto_box_PUBLICKEYBYTES); + id_copy(session_key, temp + crypto_box_NONCEBYTES); return 1; } @@ -419,11 +420,10 @@ static int getcryptconnection_id(Net_Crypto *c, uint8_t *public_key) { uint32_t i; - for (i = 0; i < c->crypto_connections_length; ++i) { + for (i = 0; i < c->crypto_connections_length; ++i) if (c->crypto_connections[i].status != CONN_NO_CONNECTION) - if (memcmp(public_key, c->crypto_connections[i].public_key, crypto_box_PUBLICKEYBYTES) == 0) + if (id_equal(public_key, c->crypto_connections[i].public_key)) return i; - } return -1; } @@ -483,7 +483,7 @@ int crypto_connect(Net_Crypto *c, uint8_t *public_key, IP_Port ip_port) c->crypto_connections[i].number = id_new; c->crypto_connections[i].status = CONN_HANDSHAKE_SENT; random_nonce(c->crypto_connections[i].recv_nonce); - memcpy(c->crypto_connections[i].public_key, public_key, crypto_box_PUBLICKEYBYTES); + id_copy(c->crypto_connections[i].public_key, public_key); crypto_box_keypair(c->crypto_connections[i].sessionpublic_key, c->crypto_connections[i].sessionsecret_key); c->crypto_connections[i].timeout = unix_time() + CRYPTO_HANDSHAKE_TIMEOUT; @@ -604,9 +604,9 @@ int accept_crypto_inbound(Net_Crypto *c, int connection_id, uint8_t *public_key, c->crypto_connections[i].timeout = unix_time() + CRYPTO_HANDSHAKE_TIMEOUT; random_nonce(c->crypto_connections[i].recv_nonce); memcpy(c->crypto_connections[i].sent_nonce, secret_nonce, crypto_box_NONCEBYTES); - memcpy(c->crypto_connections[i].peersessionpublic_key, session_key, crypto_box_PUBLICKEYBYTES); + id_copy(c->crypto_connections[i].peersessionpublic_key, session_key); increment_nonce(c->crypto_connections[i].sent_nonce); - memcpy(c->crypto_connections[i].public_key, public_key, crypto_box_PUBLICKEYBYTES); + id_copy(c->crypto_connections[i].public_key, public_key); crypto_box_keypair(c->crypto_connections[i].sessionpublic_key, c->crypto_connections[i].sessionsecret_key); @@ -658,7 +658,7 @@ void new_keys(Net_Crypto *c) */ void save_keys(Net_Crypto *c, uint8_t *keys) { - memcpy(keys, c->self_public_key, crypto_box_PUBLICKEYBYTES); + id_copy(keys, c->self_public_key); memcpy(keys + crypto_box_PUBLICKEYBYTES, c->self_secret_key, crypto_box_SECRETKEYBYTES); } @@ -667,7 +667,7 @@ void save_keys(Net_Crypto *c, uint8_t *keys) */ void load_keys(Net_Crypto *c, uint8_t *keys) { - memcpy(c->self_public_key, keys, crypto_box_PUBLICKEYBYTES); + id_copy(c->self_public_key, keys); memcpy(c->self_secret_key, keys + crypto_box_PUBLICKEYBYTES, crypto_box_SECRETKEYBYTES); } @@ -692,9 +692,9 @@ static void receive_crypto(Net_Crypto *c) len = read_packet(c->lossless_udp, c->crypto_connections[i].number, temp_data); if (handle_cryptohandshake(c, public_key, secret_nonce, session_key, temp_data, len)) { - if (memcmp(public_key, c->crypto_connections[i].public_key, crypto_box_PUBLICKEYBYTES) == 0) { + if (id_equal(public_key, c->crypto_connections[i].public_key)) { memcpy(c->crypto_connections[i].sent_nonce, secret_nonce, crypto_box_NONCEBYTES); - memcpy(c->crypto_connections[i].peersessionpublic_key, session_key, crypto_box_PUBLICKEYBYTES); + id_copy(c->crypto_connections[i].peersessionpublic_key, session_key); increment_nonce(c->crypto_connections[i].sent_nonce); uint32_t zero = 0; encrypt_precompute(c->crypto_connections[i].peersessionpublic_key, -- cgit v1.2.3 From b891446c31c5319182fcf98dd6e1edffef5857d6 Mon Sep 17 00:00:00 2001 From: irungentoo Date: Fri, 25 Oct 2013 14:43:47 -0400 Subject: For security reasons, keep memcpy's and memcmp's in crypto functions. --- toxcore/net_crypto.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'toxcore/net_crypto.c') diff --git a/toxcore/net_crypto.c b/toxcore/net_crypto.c index 7ae7c502..a9aa77f9 100644 --- a/toxcore/net_crypto.c +++ b/toxcore/net_crypto.c @@ -29,7 +29,6 @@ #endif #include "net_crypto.h" -#include "util.h" static uint8_t crypt_connection_id_not_valid(Net_Crypto *c, int crypt_connection_id) { @@ -263,8 +262,8 @@ int create_request(uint8_t *send_public_key, uint8_t *send_secret_key, uint8_t * return -1; packet[0] = NET_PACKET_CRYPTO; - id_copy(packet + 1, recv_public_key); - id_copy(packet + 1 + crypto_box_PUBLICKEYBYTES, send_public_key); + memcpy(packet + 1, recv_public_key, crypto_box_PUBLICKEYBYTES); + memcpy(packet + 1 + crypto_box_PUBLICKEYBYTES, send_public_key, crypto_box_PUBLICKEYBYTES); memcpy(packet + 1 + crypto_box_PUBLICKEYBYTES * 2, nonce, crypto_box_NONCEBYTES); return len + 1 + crypto_box_PUBLICKEYBYTES * 2 + crypto_box_NONCEBYTES; @@ -281,8 +280,8 @@ int handle_request(uint8_t *self_public_key, uint8_t *self_secret_key, uint8_t * { if (length > crypto_box_PUBLICKEYBYTES * 2 + crypto_box_NONCEBYTES + 1 + ENCRYPTION_PADDING && length <= MAX_DATA_SIZE) { - if (id_equal(packet + 1, self_public_key)) { - id_copy(public_key, packet + 1 + crypto_box_PUBLICKEYBYTES); + if (memcmp(packet + 1, self_public_key, crypto_box_PUBLICKEYBYTES) == 0) { + memcpy(public_key, packet + 1 + crypto_box_PUBLICKEYBYTES, crypto_box_PUBLICKEYBYTES); uint8_t nonce[crypto_box_NONCEBYTES]; uint8_t temp[MAX_DATA_SIZE]; memcpy(nonce, packet + 1 + crypto_box_PUBLICKEYBYTES * 2, crypto_box_NONCEBYTES); @@ -318,7 +317,7 @@ static int cryptopacket_handle(void *object, IP_Port source, uint8_t *packet, ui length > MAX_DATA_SIZE + ENCRYPTION_PADDING) return 1; - if (id_equal(packet + 1, dht->c->self_public_key)) { // Check if request is for us. + if (memcmp(packet + 1, dht->c->self_public_key, crypto_box_PUBLICKEYBYTES) == 0) { // Check if request is for us. uint8_t public_key[crypto_box_PUBLICKEYBYTES]; uint8_t data[MAX_DATA_SIZE]; uint8_t number; @@ -356,7 +355,7 @@ static int send_cryptohandshake(Net_Crypto *c, int connection_id, uint8_t *publi new_nonce(nonce); memcpy(temp, secret_nonce, crypto_box_NONCEBYTES); - id_copy(temp + crypto_box_NONCEBYTES, session_key); + memcpy(temp + crypto_box_NONCEBYTES, session_key, crypto_box_PUBLICKEYBYTES); int len = encrypt_data(public_key, c->self_secret_key, nonce, temp, crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES, 1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES + temp_data); @@ -365,7 +364,7 @@ static int send_cryptohandshake(Net_Crypto *c, int connection_id, uint8_t *publi return 0; temp_data[0] = 2; - id_copy(temp_data + 1, c->self_public_key); + memcpy(temp_data + 1, c->self_public_key, crypto_box_PUBLICKEYBYTES); memcpy(temp_data + 1 + crypto_box_PUBLICKEYBYTES, nonce, crypto_box_NONCEBYTES); return write_packet(c->lossless_udp, connection_id, temp_data, len + 1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES); @@ -391,7 +390,7 @@ static int handle_cryptohandshake(Net_Crypto *c, uint8_t *public_key, uint8_t *s uint8_t temp[crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES]; - id_copy(public_key, data + 1); + memcpy(public_key, data + 1, crypto_box_PUBLICKEYBYTES); int len = decrypt_data(public_key, c->self_secret_key, data + 1 + crypto_box_PUBLICKEYBYTES, data + 1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES, @@ -401,7 +400,7 @@ static int handle_cryptohandshake(Net_Crypto *c, uint8_t *public_key, uint8_t *s return 0; memcpy(secret_nonce, temp, crypto_box_NONCEBYTES); - id_copy(session_key, temp + crypto_box_NONCEBYTES); + memcpy(session_key, temp + crypto_box_NONCEBYTES, crypto_box_PUBLICKEYBYTES); return 1; } @@ -414,10 +413,11 @@ static int getcryptconnection_id(Net_Crypto *c, uint8_t *public_key) { uint32_t i; - for (i = 0; i < c->crypto_connections_length; ++i) + for (i = 0; i < c->crypto_connections_length; ++i) { if (c->crypto_connections[i].status != CRYPTO_CONN_NO_CONNECTION) - if (id_equal(public_key, c->crypto_connections[i].public_key)) + if (memcmp(public_key, c->crypto_connections[i].public_key, crypto_box_PUBLICKEYBYTES) == 0) return i; + } return -1; } @@ -477,7 +477,7 @@ int crypto_connect(Net_Crypto *c, uint8_t *public_key, IP_Port ip_port) c->crypto_connections[i].number = id_new; c->crypto_connections[i].status = CRYPTO_CONN_HANDSHAKE_SENT; random_nonce(c->crypto_connections[i].recv_nonce); - id_copy(c->crypto_connections[i].public_key, public_key); + memcpy(c->crypto_connections[i].public_key, public_key, crypto_box_PUBLICKEYBYTES); crypto_box_keypair(c->crypto_connections[i].sessionpublic_key, c->crypto_connections[i].sessionsecret_key); c->crypto_connections[i].timeout = unix_time() + CRYPTO_HANDSHAKE_TIMEOUT; @@ -598,9 +598,9 @@ int accept_crypto_inbound(Net_Crypto *c, int connection_id, uint8_t *public_key, c->crypto_connections[i].timeout = unix_time() + CRYPTO_HANDSHAKE_TIMEOUT; random_nonce(c->crypto_connections[i].recv_nonce); memcpy(c->crypto_connections[i].sent_nonce, secret_nonce, crypto_box_NONCEBYTES); - id_copy(c->crypto_connections[i].peersessionpublic_key, session_key); + memcpy(c->crypto_connections[i].peersessionpublic_key, session_key, crypto_box_PUBLICKEYBYTES); increment_nonce(c->crypto_connections[i].sent_nonce); - id_copy(c->crypto_connections[i].public_key, public_key); + memcpy(c->crypto_connections[i].public_key, public_key, crypto_box_PUBLICKEYBYTES); crypto_box_keypair(c->crypto_connections[i].sessionpublic_key, c->crypto_connections[i].sessionsecret_key); @@ -652,7 +652,7 @@ void new_keys(Net_Crypto *c) */ void save_keys(Net_Crypto *c, uint8_t *keys) { - id_copy(keys, c->self_public_key); + memcpy(keys, c->self_public_key, crypto_box_PUBLICKEYBYTES); memcpy(keys + crypto_box_PUBLICKEYBYTES, c->self_secret_key, crypto_box_SECRETKEYBYTES); } @@ -661,7 +661,7 @@ void save_keys(Net_Crypto *c, uint8_t *keys) */ void load_keys(Net_Crypto *c, uint8_t *keys) { - id_copy(c->self_public_key, keys); + memcpy(c->self_public_key, keys, crypto_box_PUBLICKEYBYTES); memcpy(c->self_secret_key, keys + crypto_box_PUBLICKEYBYTES, crypto_box_SECRETKEYBYTES); } @@ -686,9 +686,9 @@ static void receive_crypto(Net_Crypto *c) len = read_packet(c->lossless_udp, c->crypto_connections[i].number, temp_data); if (handle_cryptohandshake(c, public_key, secret_nonce, session_key, temp_data, len)) { - if (id_equal(public_key, c->crypto_connections[i].public_key)) { + if (memcmp(public_key, c->crypto_connections[i].public_key, crypto_box_PUBLICKEYBYTES) == 0) { memcpy(c->crypto_connections[i].sent_nonce, secret_nonce, crypto_box_NONCEBYTES); - id_copy(c->crypto_connections[i].peersessionpublic_key, session_key); + memcpy(c->crypto_connections[i].peersessionpublic_key, session_key, crypto_box_PUBLICKEYBYTES); increment_nonce(c->crypto_connections[i].sent_nonce); uint32_t zero = 0; encrypt_precompute(c->crypto_connections[i].peersessionpublic_key, -- cgit v1.2.3 From 9ccdac0e8268776c2cd7f9f6af347d44ca03c73d Mon Sep 17 00:00:00 2001 From: irungentoo Date: Fri, 25 Oct 2013 14:47:34 -0400 Subject: All modules using unix_time should run unix_time_update() --- toxcore/group_chats.c | 3 +++ toxcore/net_crypto.c | 3 +++ 2 files changed, 6 insertions(+) (limited to 'toxcore/net_crypto.c') diff --git a/toxcore/group_chats.c b/toxcore/group_chats.c index 8609e45b..fdf6e834 100644 --- a/toxcore/group_chats.c +++ b/toxcore/group_chats.c @@ -530,6 +530,8 @@ void callback_groupmessage(Group_Chat *chat, void (*function)(Group_Chat *chat, Group_Chat *new_groupchat(Networking_Core *net) { + unix_time_update(); + if (net == 0) return 0; @@ -561,6 +563,7 @@ static void ping_close(Group_Chat *chat) void do_groupchat(Group_Chat *chat) { + unix_time_update(); ping_close(chat); } diff --git a/toxcore/net_crypto.c b/toxcore/net_crypto.c index a9aa77f9..9b8eff96 100644 --- a/toxcore/net_crypto.c +++ b/toxcore/net_crypto.c @@ -753,6 +753,8 @@ static void receive_crypto(Net_Crypto *c) */ Net_Crypto *new_net_crypto(Networking_Core *net) { + unix_time_update(); + if (net == NULL) return NULL; @@ -791,6 +793,7 @@ static void kill_timedout(Net_Crypto *c) /* Main loop. */ void do_net_crypto(Net_Crypto *c) { + unix_time_update(); do_lossless_udp(c->lossless_udp); kill_timedout(c); receive_crypto(c); -- cgit v1.2.3 From d2ab13c61121fd14bbb2edc4406eaf807bbab3ec Mon Sep 17 00:00:00 2001 From: irungentoo Date: Sun, 27 Oct 2013 20:25:31 -0400 Subject: Cleaned up some code/fixed some warnings. I'm sure nobody has any of the old save files anymore so I removed the functions. --- toxcore/Messenger.c | 140 +-------------------------------------------------- toxcore/net_crypto.c | 2 +- toxcore/tox.h | 2 +- 3 files changed, 3 insertions(+), 141 deletions(-) (limited to 'toxcore/net_crypto.c') diff --git a/toxcore/Messenger.c b/toxcore/Messenger.c index 7da77541..be3d82e0 100644 --- a/toxcore/Messenger.c +++ b/toxcore/Messenger.c @@ -1890,144 +1890,6 @@ void wait_cleanup_messenger(Messenger *m, uint8_t *data, uint16_t len) networking_wait_cleanup(m->net, data, len); } -/* return size of the messenger data (for saving) */ -uint32_t Messenger_size_old(Messenger *m) -{ - return crypto_box_PUBLICKEYBYTES + crypto_box_SECRETKEYBYTES - + sizeof(uint32_t) // nospam. - + sizeof(uint32_t) // DHT size. - + DHT_size(m->dht) // DHT itself. - + sizeof(uint32_t) // Friendlist size. - + sizeof(Friend) * m->numfriends // Friendlist itself. - + sizeof(uint16_t) // Own nickname length. - + m->name_length // Own nickname. - ; -} - -/* Save the messenger in data of size Messenger_size(). Old version without cookies. */ -static void Messenger_save_old(Messenger *m, uint8_t *data) -{ - save_keys(m->net_crypto, data); - data += crypto_box_PUBLICKEYBYTES + crypto_box_SECRETKEYBYTES; - - uint32_t nospam = get_nospam(&(m->fr)); - memcpy(data, &nospam, sizeof(nospam)); - data += sizeof(nospam); - - uint32_t size = DHT_size(m->dht); - memcpy(data, &size, sizeof(size)); - data += sizeof(size); - DHT_save(m->dht, data); - data += size; - - size = sizeof(Friend) * m->numfriends; - memcpy(data, &size, sizeof(size)); - data += sizeof(size); - memcpy(data, m->friendlist, sizeof(Friend) * m->numfriends); - data += size; - - uint16_t small_size = m->name_length; - memcpy(data, &small_size, sizeof(small_size)); - data += sizeof(small_size); - memcpy(data, m->name, small_size); -} - -/* Load the messenger from data of size length. Old version without cookies. */ -static int Messenger_load_old(Messenger *m, uint8_t *data, uint32_t length) -{ - if (length == ~((uint32_t)0)) - return -1; - - /* BLOCK1: PUBKEY, SECKEY, NOSPAM, SIZE */ - if (length < crypto_box_PUBLICKEYBYTES + crypto_box_SECRETKEYBYTES + sizeof(uint32_t) * 2) - return -1; - - load_keys(m->net_crypto, data); - data += crypto_box_PUBLICKEYBYTES + crypto_box_SECRETKEYBYTES; - length -= crypto_box_PUBLICKEYBYTES + crypto_box_SECRETKEYBYTES; - - uint32_t nospam; - memcpy(&nospam, data, sizeof(nospam)); - set_nospam(&(m->fr), nospam); - data += sizeof(nospam); - length -= sizeof(nospam); - - uint32_t size; - - if (length < sizeof(size)) - return -1; - - memcpy(&size, data, sizeof(size)); - data += sizeof(size); - length -= sizeof(size); - - if (length < size) - return -1; - - if (DHT_load_old(m->dht, data, size) == -1) { -#ifdef DEBUG - fprintf(stderr, "Data file: Something wicked happened to the stored connections...\n"); - /* DO go on, friends/name still might be intact */ -#endif - } - - data += size; - length -= size; - - if (length < sizeof(size)) - return -1; - - memcpy(&size, data, sizeof(size)); - data += sizeof(size); - length -= sizeof(size); - - if (length < size) - return -1; - - if (!(size % sizeof(Friend))) { - uint16_t num = size / sizeof(Friend); - Friend *friend_list = (Friend *)data; - - uint32_t i; - - for (i = 0; i < num; ++i) { - if (friend_list[i].status >= 3) { - int fnum = m_addfriend_norequest(m, friend_list[i].client_id); - setfriendname(m, fnum, friend_list[i].name, friend_list[i].name_length); - /* set_friend_statusmessage(fnum, temp[i].statusmessage, temp[i].statusmessage_length); */ - } else if (friend_list[i].status != 0) { - /* TODO: This is not a good way to do this. */ - uint8_t address[FRIEND_ADDRESS_SIZE]; - id_copy(address, friend_list[i].client_id); - memcpy(address + crypto_box_PUBLICKEYBYTES, &(friend_list[i].friendrequest_nospam), sizeof(uint32_t)); - uint16_t checksum = address_checksum(address, FRIEND_ADDRESS_SIZE - sizeof(checksum)); - memcpy(address + crypto_box_PUBLICKEYBYTES + sizeof(uint32_t), &checksum, sizeof(checksum)); - m_addfriend(m, address, friend_list[i].info, friend_list[i].info_size); - } - } - } - - data += size; - length -= size; - - uint16_t small_size; - - if (length < sizeof(small_size)) - return -1; - - memcpy(&small_size, data, sizeof(small_size)); - data += sizeof(small_size); - length -= sizeof(small_size); - - if (length < small_size) - return -1; - - setname(m, data, small_size); - - return 0; -} - - /* new messenger format for load/save, more robust and forward compatible */ #define MESSENGER_STATE_COOKIE_GLOBAL 0x15ed1b1e @@ -2176,7 +2038,7 @@ int messenger_load(Messenger *m, uint8_t *data, uint32_t length) return load_state(messenger_load_state_callback, m, data + cookie_len, length - cookie_len, MESSENGER_STATE_COOKIE_TYPE); else /* old state file */ - return Messenger_load_old(m, data, length); + return -1; } /* Return the number of friends in the instance m. diff --git a/toxcore/net_crypto.c b/toxcore/net_crypto.c index 9b8eff96..3c7c114e 100644 --- a/toxcore/net_crypto.c +++ b/toxcore/net_crypto.c @@ -29,7 +29,7 @@ #endif #include "net_crypto.h" - +#include "util.h" static uint8_t crypt_connection_id_not_valid(Net_Crypto *c, int crypt_connection_id) { return (uint32_t)crypt_connection_id >= c->crypto_connections_length; diff --git a/toxcore/tox.h b/toxcore/tox.h index 0c7aa13c..5d3916b4 100644 --- a/toxcore/tox.h +++ b/toxcore/tox.h @@ -62,7 +62,7 @@ extern "C" { #define TOX_FRIEND_ADDRESS_SIZE (TOX_CLIENT_ID_SIZE + sizeof(uint32_t) + sizeof(uint16_t)) #define TOX_PORTRANGE_FROM 33445 -#define TOX_PORTRANGE_TO 33455 +#define TOX_PORTRANGE_TO 33545 #define TOX_PORT_DEFAULT TOX_PORTRANGE_FROM typedef union { -- cgit v1.2.3