From 71bc275284d3d42fe32d3b1919f1075c3104d304 Mon Sep 17 00:00:00 2001 From: Sean Qureshi Date: Sun, 18 Aug 2013 00:23:50 -0700 Subject: Fixed a core memory leak --- core/Messenger.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'core/Messenger.c') diff --git a/core/Messenger.c b/core/Messenger.c index 2b5c8241..c7759cf1 100644 --- a/core/Messenger.c +++ b/core/Messenger.c @@ -951,6 +951,7 @@ int Messenger_load(Messenger *m, uint8_t *data, uint32_t length) } } + free(temp); data += size; length -= size; @@ -968,7 +969,6 @@ int Messenger_load(Messenger *m, uint8_t *data, uint32_t length) setname(m, data, small_size); - free(temp); return 0; } -- cgit v1.2.3 From 17d38781743e0e9f03fbf41398ac6dffd32f28a5 Mon Sep 17 00:00:00 2001 From: Sean Qureshi Date: Sun, 18 Aug 2013 01:26:11 -0700 Subject: Added minor error checking in Core, this helps prevent CERT MEM04-C; CWE-131 --- core/Messenger.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'core/Messenger.c') diff --git a/core/Messenger.c b/core/Messenger.c index c7759cf1..051078f9 100644 --- a/core/Messenger.c +++ b/core/Messenger.c @@ -37,8 +37,9 @@ static int write_cryptpacket_id(Messenger *m, int friendnumber, uint8_t packet_i return -1 if realloc fails */ int realloc_friendlist(Messenger *m, uint32_t num) { + if (num * sizeof(Friend) == 0) return -1; + Friend *newfriendlist = realloc(m->friendlist, num * sizeof(Friend)); - if (newfriendlist == NULL && num != 0) return -1; @@ -597,7 +598,6 @@ int write_cryptpacket_id(Messenger *m, int friendnumber, uint8_t packet_id, uint /*Interval in seconds between LAN discovery packet sending*/ #define LAN_DISCOVERY_INTERVAL 60 - #define PORT 33445 /*Send a LAN discovery packet every LAN_DISCOVERY_INTERVAL seconds*/ @@ -971,4 +971,3 @@ int Messenger_load(Messenger *m, uint8_t *data, uint32_t length) return 0; } - -- cgit v1.2.3 From 1986e6b7f49b83577bd7d4cdd3efa5c8e40338f4 Mon Sep 17 00:00:00 2001 From: Sean Qureshi Date: Sun, 18 Aug 2013 01:48:36 -0700 Subject: Ran it through astyle --- auto_tests/messenger_test.c | 12 ++++++------ core/Messenger.c | 3 ++- testing/toxic/main.c | 10 +++++----- testing/toxic/prompt.c | 1 + 4 files changed, 14 insertions(+), 12 deletions(-) (limited to 'core/Messenger.c') diff --git a/auto_tests/messenger_test.c b/auto_tests/messenger_test.c index 3ca89152..9de69409 100644 --- a/auto_tests/messenger_test.c +++ b/auto_tests/messenger_test.c @@ -88,12 +88,12 @@ START_TEST(test_m_set_userstatus) uint16_t bad_length = REALLY_BIG_NUMBER; ck_assert_msg((m_set_statusmessage(m, (uint8_t *)status, bad_length) == -1), - "m_set_userstatus did NOT catch the following length: %d\n", - REALLY_BIG_NUMBER); + "m_set_userstatus did NOT catch the following length: %d\n", + REALLY_BIG_NUMBER); ck_assert_msg((m_set_statusmessage(m, (uint8_t *)status, good_length) == 0), - "m_set_userstatus did NOT return 0 on the following length: %d\n" - "MAX_STATUSMESSAGE_LENGTH: %d\n", good_length, MAX_STATUSMESSAGE_LENGTH); + "m_set_userstatus did NOT return 0 on the following length: %d\n" + "MAX_STATUSMESSAGE_LENGTH: %d\n", good_length, MAX_STATUSMESSAGE_LENGTH); } END_TEST @@ -157,10 +157,10 @@ START_TEST(test_setname) int bad_length = REALLY_BIG_NUMBER; ck_assert_msg((setname(m, (uint8_t *)good_name, bad_length) == -1), - "setname() did NOT error on %d as a length argument!\n", bad_length); + "setname() did NOT error on %d as a length argument!\n", bad_length); ck_assert_msg((setname(m, (uint8_t *)good_name, good_length) == 0), - "setname() did NOT return 0 on good arguments!\n"); + "setname() did NOT return 0 on good arguments!\n"); } END_TEST diff --git a/core/Messenger.c b/core/Messenger.c index 051078f9..8a5d9ed4 100644 --- a/core/Messenger.c +++ b/core/Messenger.c @@ -38,8 +38,9 @@ static int write_cryptpacket_id(Messenger *m, int friendnumber, uint8_t packet_i int realloc_friendlist(Messenger *m, uint32_t num) { if (num * sizeof(Friend) == 0) return -1; - + Friend *newfriendlist = realloc(m->friendlist, num * sizeof(Friend)); + if (newfriendlist == NULL && num != 0) return -1; diff --git a/testing/toxic/main.c b/testing/toxic/main.c index 2da87bc6..c89f2f86 100644 --- a/testing/toxic/main.c +++ b/testing/toxic/main.c @@ -92,11 +92,11 @@ int init_connection(void) if (DHT_isconnected()) return 0; - #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) - FILE *fp = fopen("DHTservers", "r"); - #else - FILE *fp = fopen("~/.tox/DHTservers", "r"); - #endif +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) + FILE *fp = fopen("DHTservers", "r"); +#else + FILE *fp = fopen("~/.tox/DHTservers", "r"); +#endif if (!fp) return 1; diff --git a/testing/toxic/prompt.c b/testing/toxic/prompt.c index a37fdaaa..e6c88510 100644 --- a/testing/toxic/prompt.c +++ b/testing/toxic/prompt.c @@ -273,6 +273,7 @@ void cmd_nick(ToxWindow *self, Messenger *m, char **args) char *nick = args[1]; setname(m, (uint8_t *) nick, strlen(nick) + 1); wprintw(self->window, "Nickname set to: %s\n", nick); + if (store_data(m, DATA_FILE)) { wprintw(self->window, "\nCould not store Messenger data\n"); } -- cgit v1.2.3