cfgparser: fix some memory leaks
authorFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 23 Oct 2012 12:06:12 +0000 (14:06 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 23 Oct 2012 12:15:24 +0000 (14:15 +0200)
Coverity:
CID 739682 (#1 of 2): Resource leak (RESOURCE_LEAK)
At (84): Variable "in" going out of scope leaks the storage it points to.
CID 739682 (#2 of 2): Resource leak (RESOURCE_LEAK)
At (89): Variable "in" going out of scope leaks the storage it points to.

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/cfgparser/oparse.y

index cfea5ef..f5d4e5b 100644 (file)
@@ -430,6 +430,13 @@ ifdblock: TOK_INTERFACE_DEFAULTS
 
   if (in->cnf == NULL || in->cnfi == NULL) {
     fprintf(stderr, "Out of memory(ADD DEFIFRULE)\n");
+    if (in->cnf) {
+      free(in->cnf);
+    }
+    if (in->cnfi) {
+      free(in->cnfi);
+    }
+    free(in);
     YYABORT;
   }
 
@@ -965,6 +972,7 @@ ifnick: TOK_STRING
     in->cnf = malloc(sizeof(*in->cnf));
     if (in->cnf == NULL) {
       fprintf(stderr, "Out of memory(ADD IFRULE)\n");
+      free(in);
       YYABORT;
     }
     memset(in->cnf, 0x00, sizeof(*in->cnf));
@@ -972,6 +980,7 @@ ifnick: TOK_STRING
     in->cnfi = malloc(sizeof(*in->cnfi));
     if (in->cnf == NULL) {
       fprintf(stderr, "Out of memory(ADD IFRULE)\n");
+      free(in);
       YYABORT;
     }
     memset(in->cnfi, 0xFF, sizeof(*in->cnfi));