From: Felix Morgner Date: Mon, 6 Jul 2015 09:20:34 +0000 (+0200) Subject: Fixed mutiple possible null-pointer derefences #63 X-Git-Url: http://git.code-monkey.de/?p=umurmur.git;a=commitdiff_plain;h=c2eec4582ad6f5f759d8b9a3c7f9bf78aa59f656 Fixed mutiple possible null-pointer derefences #63 --- diff --git a/src/channel.c b/src/channel.c index 3a5fac0..fdf4e82 100644 --- a/src/channel.c +++ b/src/channel.c @@ -221,8 +221,10 @@ void Chan_init() chlink.destination); else ch_dst = ch_itr; - + chl = malloc(sizeof(channellist_t)); + if(!chl) + Log_fatal("Out of memory"); chl->chan = ch_dst; init_list_entry(&chl->node); list_add_tail(&chl->node, &ch_src->channel_links); @@ -381,6 +383,8 @@ void Chan_buildTreeList(channel_t *ch, struct dlist *head) channel_t *sub; chl = malloc(sizeof(channellist_t)); + if(!chl) + Log_fatal("Out of memory"); chl->chan = ch; init_list_entry(&chl->node); list_add_tail(&chl->node, head); diff --git a/src/messagehandler.c b/src/messagehandler.c index 6adcf77..e93afb9 100644 --- a/src/messagehandler.c +++ b/src/messagehandler.c @@ -285,6 +285,9 @@ void Mh_handle_message(client_t *client, message_t *msg) sendmsg->payload.channelState->n_links = ch_itr->linkcount; links = (uint32_t *)malloc(ch_itr->linkcount * sizeof(uint32_t)); + if(!links) + Log_fatal("Out of memory"); + list_iterate(itr, &ch_itr->channel_links) { /* Iterate links */ channellist_t *chl; channel_t *ch; diff --git a/src/server.c b/src/server.c index 1a58632..f584f7f 100644 --- a/src/server.c +++ b/src/server.c @@ -73,7 +73,7 @@ void checkIPversions() testsocket = socket(PF_INET6, SOCK_STREAM, 0); hasv6 = (errno == EAFNOSUPPORT || errno == EPROTONOSUPPORT) ? false : true; if (!(testsocket < 0)) close(testsocket); - + if(!hasv4) { Log_info("IPv4 is not supported by this system"); @@ -95,11 +95,18 @@ void checkIPversions() struct sockaddr_storage** Server_setupAddressesAndPorts() { struct sockaddr_storage** addresses = calloc(2, sizeof(void*)); + if(!addresses) + Log_fatal("Not enough memory to allocate addresses"); struct sockaddr_storage* v4address = calloc(1, sizeof(struct sockaddr_storage)); v4address->ss_family = AF_INET; + if(!v4address) + Log_fatal("Not enough memory to allocate IPv4 address"); + struct sockaddr_storage* v6address = calloc(1, sizeof(struct sockaddr_storage)); v6address->ss_family = AF_INET6; + if(!v4address) + Log_fatal("Not enough memory to allocate IPv6 address"); #if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) v4address->ss_len = sizeof(struct sockaddr_storage);