Pull fix for Coverity bug #15 from 1.1.x
authoraland <aland>
Tue, 15 May 2007 09:58:25 +0000 (09:58 +0000)
committeraland <aland>
Tue, 15 May 2007 09:58:25 +0000 (09:58 +0000)
src/main/radclient.c

index fb8cd40..59b7311 100644 (file)
@@ -177,6 +177,7 @@ static radclient_t *radclient_init(const char *filename)
                radclient = malloc(sizeof(*radclient));
                if (!radclient) {
                        perror("radclient: X");
+                       if (fp != stdin) fclose(fp);
                        return NULL; /* memory leak "start" */
                }
                memset(radclient, 0, sizeof(*radclient));
@@ -185,6 +186,7 @@ static radclient_t *radclient_init(const char *filename)
                if (!radclient->request) {
                        librad_perror("radclient: Y");
                        radclient_free(radclient);
+                       if (fp != stdin) fclose(fp);
                        return NULL; /* memory leak "start" */
                }
 
@@ -198,6 +200,7 @@ static radclient_t *radclient_init(const char *filename)
                radclient->request->vps = readvp2(fp, &filedone, "radclient:");
                if (!radclient->request->vps) {
                        radclient_free(radclient);
+                       if (fp != stdin) fclose(fp);
                        return start; /* done: return the list */
                }