Handle configuration errors better.
authorLinus Nordberg <linus@nordu.net>
Sun, 3 Jul 2011 08:13:51 +0000 (10:13 +0200)
committerLinus Nordberg <linus@nordu.net>
Sun, 3 Jul 2011 08:13:51 +0000 (10:13 +0200)
lib/conf.c
lib/radsec.c

index 06ae3aa..e3d5522 100644 (file)
@@ -40,8 +40,6 @@
 int
 rs_context_read_config(struct rs_context *ctx, const char *config_file)
 {
-  /* FIXME: Missing some error handling!  */
-
   cfg_t *cfg, *cfg_realm, *cfg_server;
   int i, j;
   const char *s;
@@ -74,6 +72,8 @@ rs_context_read_config(struct rs_context *ctx, const char *config_file)
     };
 
   cfg = cfg_init (opts, CFGF_NONE);
+  if (cfg == NULL)
+    return rs_err_ctx_push (ctx, RSE_CONFIG, "unable to initialize libconfuse");
   if (cfg_parse (cfg, config_file) == CFG_PARSE_ERROR)
     return rs_err_ctx_push (ctx, RSE_CONFIG, "%s: invalid configuration file",
                            config_file);
@@ -139,6 +139,8 @@ rs_context_read_config(struct rs_context *ctx, const char *config_file)
          p->realm = r;
 
          cfg_server = cfg_getnsec (cfg_realm, "server", j);
+         /* FIXME: Handle resolve errors, possibly by postponing name
+            resolution.  */
          rs_resolv (&p->addr, r->type, cfg_getstr (cfg_server, "hostname"),
                     cfg_getstr (cfg_server, "service"));
          p->secret = cfg_getstr (cfg_server, "secret");
index 6104e46..d4c0a09 100644 (file)
@@ -64,7 +64,7 @@ rs_context_init_freeradius_dict (struct rs_context *ctx, const char *dict)
   char *fn = NULL;
 
   if (dict == NULL)
-    if (ctx->config != NULL)
+    if (ctx->config != NULL && ctx->config->dictionary)
       dict = ctx->config->dictionary;
 
   if (dict == NULL)
@@ -83,7 +83,8 @@ rs_context_init_freeradius_dict (struct rs_context *ctx, const char *dict)
 
   if (dict_init (dirname (dir), basename (fn)) < 0)
     {
-      r = rs_err_ctx_push_fl (ctx, RSE_FR, __FILE__, __LINE__, "dict_init");
+      r = rs_err_ctx_push_fl (ctx, RSE_FR, __FILE__, __LINE__,
+                             "failing dict_init(\"%s\")", dict);
       goto out;
     }