From ef2a4f128fa0250db5457069e397bf328c6da25e Mon Sep 17 00:00:00 2001
From: Sander Vrijders <sander.vrijders@intec.ugent.be>
Date: Thu, 3 Mar 2016 15:06:09 +0100
Subject: lib, irmd: Fix memleaks

Fixes a couple of memleaks found while executing with valgrind.
---
 src/irmd/main.c | 11 ++---------
 src/lib/irm.c   |  8 ++++++--
 2 files changed, 8 insertions(+), 11 deletions(-)

(limited to 'src')

diff --git a/src/irmd/main.c b/src/irmd/main.c
index 73533ef0..0c69de2f 100644
--- a/src/irmd/main.c
+++ b/src/irmd/main.c
@@ -78,18 +78,12 @@ static void unreg_ipcp(rina_name_t * name,
 int main()
 {
         int sockfd;
-        uint8_t * buf;
+        uint8_t buf[IRM_MSG_BUF_SIZE];
 
         sockfd = server_socket_open(IRM_SOCK_PATH);
         if (sockfd < 0)
                 return -1;
 
-        buf = malloc(sizeof(*buf) * IRM_MSG_BUF_SIZE);
-        if (buf == NULL) {
-                LOG_ERR("Cannot allocate memory");
-                return -ENOMEM;
-        }
-
         while (true) {
                 int cli_sockfd;
                 struct irm_msg * msg;
@@ -140,12 +134,11 @@ int main()
                                 LOG_ERR("Don't know that message code");
                                 break;
                         }
+                        free(msg);
                 }
 
                 close(cli_sockfd);
         }
 
-        free(buf);
-
         return 0;
 }
diff --git a/src/lib/irm.c b/src/lib/irm.c
index 97000029..8756d7fc 100644
--- a/src/lib/irm.c
+++ b/src/lib/irm.c
@@ -26,6 +26,7 @@
 #include <ouroboros/common.h>
 #include <ouroboros/logs.h>
 #include <ouroboros/sockets.h>
+#include <stdlib.h>
 
 static int send_irm_msg(struct irm_msg * msg)
 {
@@ -47,8 +48,11 @@ static int send_irm_msg(struct irm_msg * msg)
                return -1;
        }
 
-        close(sockfd);
-        return 0;
+       free(buf->data);
+       free(buf);
+
+       close(sockfd);
+       return 0;
 }
 
 int irm_create_ipcp(rina_name_t name,
-- 
cgit v1.2.3