Make radsecproxy-conf exit with !0 if it finds syntax errors in config file.
authorLinus Nordberg <linus@nordu.net>
Mon, 23 Jan 2012 12:06:09 +0000 (13:06 +0100)
committerLinus Nordberg <linus@nordu.net>
Mon, 23 Jan 2012 12:06:09 +0000 (13:06 +0100)
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

index 5cdec68..f972051 100644 (file)
@@ -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]);