diff --git a/src/chat.c b/src/chat.c index ec6063f..78ae720 100644 --- a/src/chat.c +++ b/src/chat.c @@ -142,12 +142,22 @@ static char *wcs_to_char(wchar_t *string) if (len != (size_t) -1) { len++; ret = malloc(len); - wcstombs(ret, string, len); + if (ret != NULL) + wcstombs(ret, string, len); } else { ret = malloc(2); - ret[0] = ' '; - ret[1] = '\0'; + if (ret != NULL) { + ret[0] = ' '; + ret[1] = '\0'; + } } + + if (ret == NULL) { + fprintf(stderr, "malloc() failed. Aborting...\n"); + endwin(); + exit(EXIT_FAILURE); + } + return ret; } @@ -533,8 +543,16 @@ ToxWindow new_chat(Tox *m, ToxWindow *prompt, int friendnum) ChatContext *x = calloc(1, sizeof(ChatContext)); StatusBar *s = calloc(1, sizeof(StatusBar)); - ret.x = x; - ret.s = s; + + + if (s != NULL && x != NULL) { + ret.x = x; + ret.s = s; + } else { + fprintf(stderr, "calloc() failed. Aborting...\n"); + endwin(); + exit(EXIT_FAILURE); + } ret.prompt = prompt; ret.friendnum = friendnum; diff --git a/src/main.c b/src/main.c index 16c3e7a..4555789 100644 --- a/src/main.c +++ b/src/main.c @@ -317,14 +317,14 @@ static void load_data(Tox *m, char *path) buf = malloc(len); if (buf == NULL) { - fprintf(stderr, "malloc() failed.\n"); + fprintf(stderr, "malloc() failed. Aborting...\n"); fclose(fd); endwin(); exit(EXIT_FAILURE); } if (fread(buf, len, 1, fd) != 1) { - fprintf(stderr, "fread() failed.\n"); + fprintf(stderr, "fread() failed. Aborting...\n"); free(buf); fclose(fd); endwin(); @@ -357,13 +357,9 @@ static void load_data(Tox *m, char *path) void exit_toxic(Tox *m) { store_data(m, DATA_FILE); - - if (DATA_FILE != NULL) - free(DATA_FILE); - - if (SRVLIST_FILE != NULL) - free(SRVLIST_FILE); - + free(DATA_FILE); + free(SRVLIST_FILE); + free(prompt->s); tox_kill(m); endwin(); exit(EXIT_SUCCESS); @@ -401,17 +397,20 @@ int main(int argc, char *argv[]) SRVLIST_FILE = strdup(PACKAGE_DATADIR "/DHTservers"); } else { DATA_FILE = malloc(strlen(user_config_dir) + strlen(CONFIGDIR) + strlen("data") + 1); - if (DATA_FILE != NULL) { + SRVLIST_FILE = malloc(strlen(user_config_dir) + strlen(CONFIGDIR) + strlen("DHTservers") + 1); + + if (DATA_FILE != NULL && SRVLIST_FILE != NULL) { strcpy(DATA_FILE, user_config_dir); strcat(DATA_FILE, CONFIGDIR); strcat(DATA_FILE, "data"); - } - SRVLIST_FILE = malloc(strlen(user_config_dir) + strlen(CONFIGDIR) + strlen("DHTservers") + 1); - if (SRVLIST_FILE != NULL) { strcpy(SRVLIST_FILE, user_config_dir); strcat(SRVLIST_FILE, CONFIGDIR); strcat(SRVLIST_FILE, "DHTservers"); + } else { + fprintf(stderr, "malloc() failed. Aborting...\n"); + endwin(); + exit(EXIT_FAILURE); } } } diff --git a/src/prompt.c b/src/prompt.c index 6b14045..e581f55 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -113,6 +113,13 @@ unsigned char *hex_string_to_bin(char hex_string[]) { size_t len = strlen(hex_string); unsigned char *val = malloc(len); + + if (val == NULL) { + fprintf(stderr, "malloc() failed. Aborting...\n"); + endwin(); + exit(EXIT_FAILURE); + } + char *pos = hex_string; int i; @@ -688,7 +695,14 @@ ToxWindow new_prompt() strcpy(ret.name, "prompt"); StatusBar *s = calloc(1, sizeof(StatusBar)); - ret.s = s; + + if (s != NULL) + ret.s = s; + else { + fprintf(stderr, "calloc() failed. Aborting...\n"); + endwin(); + exit(EXIT_FAILURE); + } return ret; }