]> git.pond.sub.org Git - empserver/commitdiff
Plug FILE leak on read_schedule() parse error path
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 29 Oct 2011 12:47:02 +0000 (14:47 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 29 Dec 2011 10:47:04 +0000 (11:47 +0100)
Leak introduced in initial commit 71320ed6, v4.3.10.

src/lib/common/rdsched.c

index 685ebc68cb4c4dd313275e1effc97ec8faf8e0cc..4065a42348418337ac523a60c970c5279018dfa8 100644 (file)
@@ -63,7 +63,7 @@ int
 read_schedule(char *fname, time_t sched[], int n, time_t t0, time_t anchor)
 {
     FILE *fp;
-    int lno = 0;
+    int ret, lno;
     char buf[1024];
     char *endp;
 
@@ -79,18 +79,21 @@ read_schedule(char *fname, time_t sched[], int n, time_t t0, time_t anchor)
        fname = "<stdin>";
     }
 
+    ret = lno = 0;
     sched[0] = 0;
     while (fgets(buf, sizeof(buf), fp) != NULL) {
        ++lno;
        endp = strchr(buf, '#');
        if (endp)
            *endp = 0;
-       if (parse_schedule_line(buf, sched, n, t0, &anchor, fname, lno))
-           return -1;
+       if (parse_schedule_line(buf, sched, n, t0, &anchor, fname, lno)) {
+           ret = -1;
+           break;
+       }
     }
 
     fclose(fp);
-    return 0;
+    return ret;
 }
 
 /*