summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordu.net>2012-04-03 16:56:23 +0200
committerLinus Nordberg <linus@nordu.net>2012-04-09 11:38:13 +0200
commited6f9b47c51b6fc5540d24112883db8b6ca2931b (patch)
treee79053648aa1b65b742ad4d500ce3ae92deb389d
parentf41042e6afb1d12275fd3f30a1ecb309b83a2937 (diff)
Don't free memory which others are still using.
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.
-rw-r--r--radsecproxy.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/radsecproxy.c b/radsecproxy.c
index b279418..2facb2b 100644
--- a/radsecproxy.c
+++ b/radsecproxy.c
@@ -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) {