diff options
author | Sander Vrijders <[email protected]> | 2016-03-17 10:39:37 +0100 |
---|---|---|
committer | Sander Vrijders <[email protected]> | 2016-03-17 10:39:37 +0100 |
commit | 7747528435d77ad055a5c3124a89717e42807b9a (patch) | |
tree | 1b13d3833029a2bdab59ad287fa44eb762f82994 /src/irmd | |
parent | 788414c1a728440e25b8a7428af294189e3b70ca (diff) | |
download | ouroboros-7747528435d77ad055a5c3124a89717e42807b9a.tar.gz ouroboros-7747528435d77ad055a5c3124a89717e42807b9a.zip |
lib, irmd: Fix memleaks
This removes some memleaks present in the sockets layer. It also fixes
the bad initialization of the difs_size param in the irm_msg.
Diffstat (limited to 'src/irmd')
-rw-r--r-- | src/irmd/main.c | 13 |
1 files changed, 12 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); } |