diff options
author | Dimitri Staessens <dimitri.staessens@intec.ugent.be> | 2016-03-17 10:42:35 +0100 |
---|---|---|
committer | Dimitri Staessens <dimitri.staessens@intec.ugent.be> | 2016-03-17 10:42:35 +0100 |
commit | 80679807f5ed13fd0a214bc6cd4e1c182d87bfae (patch) | |
tree | 1b13d3833029a2bdab59ad287fa44eb762f82994 /src | |
parent | 788414c1a728440e25b8a7428af294189e3b70ca (diff) | |
parent | 7747528435d77ad055a5c3124a89717e42807b9a (diff) | |
download | ouroboros-80679807f5ed13fd0a214bc6cd4e1c182d87bfae.tar.gz ouroboros-80679807f5ed13fd0a214bc6cd4e1c182d87bfae.zip |
Merged in sandervrijders/ouroboros/be (pull request #34)
lib, irmd: Fix memleaks
Diffstat (limited to 'src')
-rw-r--r-- | src/irmd/main.c | 13 | ||||
-rw-r--r-- | src/lib/sockets.c | 1 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/irmd/main.c b/src/irmd/main.c index b695519a..99896999 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -203,7 +203,7 @@ static void unreg_ipcp(struct irm * instance, /* FIXME: Close sockfd on closing and release irm */ int main() { - struct irm * instance; + struct irm * instance = NULL; int sockfd; uint8_t buf[IRM_MSG_BUF_SIZE]; @@ -222,6 +222,7 @@ int main() struct irm_msg * msg; ssize_t count; buffer_t buffer; + int i; cli_sockfd = accept(sockfd, 0, 0); if (cli_sockfd < 0) { @@ -242,6 +243,7 @@ int main() create_ipcp(instance, *(msg->name), msg->ipcp_type); + free(msg->ipcp_type); break; case IRM_DESTROY_IPCP: destroy_ipcp(instance, @@ -251,28 +253,37 @@ int main() bootstrap_ipcp(instance, *(msg->name), *(msg->conf)); + free(msg->conf); break; case IRM_ENROLL_IPCP: enroll_ipcp(instance, *(msg->name), msg->dif_name); + free(msg->dif_name); break; case IRM_REG_IPCP: reg_ipcp(instance, *(msg->name), msg->difs, msg->difs_size); + for (i = 0; i < msg->difs_size; i++) + free(msg->difs[i]); + free(msg->difs); break; case IRM_UNREG_IPCP: unreg_ipcp(instance, *(msg->name), msg->difs, msg->difs_size); + for (i = 0; i < msg->difs_size; i++) + free(msg->difs[i]); + free(msg->difs); break; default: LOG_ERR("Don't know that message code"); break; } + name_destroy(msg->name); free(msg); } diff --git a/src/lib/sockets.c b/src/lib/sockets.c index 90117c5c..59ac40f9 100644 --- a/src/lib/sockets.c +++ b/src/lib/sockets.c @@ -338,6 +338,7 @@ struct irm_msg * deserialize_irm_msg(buffer_t * data) case IRM_REG_IPCP: case IRM_UNREG_IPCP: deser_copy_size_t(data->data, &difs_size, &offset); + msg->difs_size = difs_size; msg->difs = malloc(sizeof(*(msg->difs)) * difs_size); if (msg->difs == NULL) { |