Code

added some freeing for error conditions
authoroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Wed, 27 Aug 2008 21:46:01 +0000 (21:46 +0000)
committeroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Wed, 27 Aug 2008 21:46:01 +0000 (21:46 +0000)
git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk/program@1467 a5681a0c-68f1-0310-ab6d-d61299d08faa

src/rrd_tool.c

index f536fa517926a15d60791b888fad285a08ab342f..80bdb6e70c399a662b9ef1c7f7aaae7d022453f6 100644 (file)
@@ -364,6 +364,7 @@ static char *fgetslong(
             return *aLinePtr = linebuf;
         bufsize += MAX_LENGTH;
         if (!(linebuf = realloc(linebuf, bufsize))) {
+            free(linebuf);
             perror("fgetslong: realloc");
             exit(1);
         }
@@ -448,6 +449,7 @@ int main(
 
         while (fgetslong(&aLine, stdin)) {
             if ((argc = CountArgs(aLine)) == 0) {
+                free(aLine);
                 printf("ERROR: not enough arguments\n");
             }
             if ((myargv = (char **) malloc((argc + 1) *
@@ -456,6 +458,8 @@ int main(
                 exit(1);
             }
             if ((argc = CreateArgs(argv[0], aLine, argc, myargv)) < 0) {
+                free(aLine);
+                free(myargv);
                 printf("ERROR: creating arguments\n");
             } else {
                 int       ret = HandleInputLine(argc, myargv, stdout);