From b1414bff978dfa517a9cc8fa644d3032733e8bd8 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Mon, 23 Jan 2012 13:06:09 +0100 Subject: [PATCH] Make radsecproxy-conf exit with !0 if it finds syntax errors in config file. Note that this is a syntax check only. Passing this test doesn't mean that the config file is good for running radsecproxy! --- catgconf.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/catgconf.c b/catgconf.c index 5cdec68..f972051 100644 --- a/catgconf.c +++ b/catgconf.c @@ -5,16 +5,17 @@ #include "debug.h" #include "gconfig.h" -void listconfig(struct gconffile **cf, char *block, int compact) { +int listconfig(struct gconffile **cf, char *block, int compact) { char *opt = NULL, *val = NULL; int conftype; for (;;) { free(opt); free(val); - getconfigline(cf, block, &opt, &val, &conftype); - if (!opt) - return; + if (!getconfigline(cf, block, &opt, &val, &conftype)) + return -1; + if (!opt) + return 0; /* Success. */ if (conftype == CONF_STR && !strcasecmp(opt, "include")) { if (!pushgconfpaths(cf, val)) @@ -31,13 +32,17 @@ void listconfig(struct gconffile **cf, char *block, int compact) { break; case CONF_CBK: printf("%s %s {%s", opt, val, compact ? "" : "\n"); - listconfig(cf, val, compact); + if (listconfig(cf, val, compact)) + return -1; printf("}\n"); break; default: printf("Unsupported config type\n"); + return -1; } } + + return 0; /* Success. */ } int main(int argc, char **argv) { @@ -60,8 +65,7 @@ int main(int argc, char **argv) { goto usage; cfs = openconfigfile(argv[optind]); - listconfig(&cfs, NULL, compact); - return 0; + return listconfig(&cfs, NULL, compact); usage: debug(DBG_ERR, "Usage:\n%s [ -c ] configfile", argv[0]); -- 2.1.4