Don't free memory which others are still using.
authorLinus Nordberg <linus@nordu.net>
Tue, 3 Apr 2012 14:56:23 +0000 (16:56 +0200)
committerLinus Nordberg <linus@nordu.net>
Mon, 9 Apr 2012 09:38:13 +0000 (11:38 +0200)
In the error case in confserver_cb() where compileserverconfig() we
used to go to errexit and have resonf, passed as an argument through
ARG, freed.  Other parts are still using that conf.

radsecproxy.c

index b279418..2facb2b 100644 (file)
@@ -2944,7 +2944,8 @@ int confserver_cb(struct gconffile **cf, void *arg, char *block, char *opt, char
 
     if (resconf || !conf->dynamiclookupcommand) {
        if (!compileserverconfig(conf, block))
-           goto errexit;
+            return 0; /* Don't goto errexit and free resconf -- it's
+                       * not ours to free.  */
     }
 
     if (!conf->secret) {