From b884a7a9c4b846f8e9f571f50cd9c5d9518e6ca2 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Fri, 4 Mar 2011 12:51:42 +0100 Subject: Do free the config object. --- lib/conf.c | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/conf.c') diff --git a/lib/conf.c b/lib/conf.c index 5c1c51b..adbda25 100644 --- a/lib/conf.c +++ b/lib/conf.c @@ -118,6 +118,7 @@ rs_context_read_config(struct rs_context *ctx, const char *config_file) p->secret = strdup (cfg_getstr (cfg_server, "secret")); } } + cfg_free (cfg); return RSE_OK; } -- cgit v1.1 From 69b4b2fa50c7789ae16c2b417c8c291ed780770d Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Fri, 4 Mar 2011 13:00:42 +0100 Subject: Do _copy_ the strings from the config object. --- lib/conf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/conf.c') diff --git a/lib/conf.c b/lib/conf.c index adbda25..ff225ce 100644 --- a/lib/conf.c +++ b/lib/conf.c @@ -98,10 +98,10 @@ rs_context_read_config(struct rs_context *ctx, const char *config_file) r->timeout = cfg_getint (cfg_config, "timeout"); r->retries = cfg_getint (cfg_config, "retries"); - r->cacertfile = cfg_getstr (cfg_config, "cacertfile"); - /*r->cacertpath = cfg_getstr (cfg_config, "cacertpath");*/ - r->certfile = cfg_getstr (cfg_config, "certfile"); - r->certkeyfile = cfg_getstr (cfg_config, "certkeyfile"); + r->cacertfile = strdup (cfg_getstr (cfg_config, "cacertfile")); + /*r->cacertpath = strdup (cfg_getstr (cfg_config, "cacertpath"));*/ + r->certfile = strdup (cfg_getstr (cfg_config, "certfile")); + r->certkeyfile = strdup (cfg_getstr (cfg_config, "certkeyfile")); /* Add peers, one per server stanza. */ for (j = 0; j < cfg_size (cfg_config, "server"); j++) -- cgit v1.1 From f87be530d67823a5d82367468e33d58b201ebee1 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Sun, 6 Mar 2011 14:30:14 +0100 Subject: Don't free config object until we destroy the context. --- lib/conf.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'lib/conf.c') diff --git a/lib/conf.c b/lib/conf.c index ff225ce..c8b2a46 100644 --- a/lib/conf.c +++ b/lib/conf.c @@ -31,9 +31,12 @@ int rs_context_read_config(struct rs_context *ctx, const char *config_file) { - /* FIXME: Missing some error handling in rs_context_read_config(). */ + cfg_t *cfg, *cfg_config, *cfg_server; + int i, j; + const char *s; + cfg_opt_t server_opts[] = { CFG_STR ("hostname", NULL, CFGF_NONE), @@ -58,8 +61,6 @@ rs_context_read_config(struct rs_context *ctx, const char *config_file) CFG_SEC ("config", config_opts, CFGF_TITLE | CFGF_MULTI), CFG_END () }; - cfg_t *cfg, *cfg_config, *cfg_server; - int i, j; cfg = cfg_init (opts, CFGF_NONE); if (cfg_parse (cfg, config_file) == CFG_PARSE_ERROR) @@ -81,7 +82,11 @@ rs_context_read_config(struct rs_context *ctx, const char *config_file) else ctx->realms = r; cfg_config = cfg_getnsec (cfg, "config", i); - r->name = strdup (cfg_title (cfg_config)); + s = cfg_title (cfg_config); + if (s == NULL) + return rs_err_ctx_push_fl (ctx, RSE_CONFIG, __FILE__, __LINE__, + "missing config name"); + r->name = strdup (s); typestr = cfg_getstr (cfg_config, "type"); if (!strcmp (typestr, "UDP")) @@ -98,10 +103,10 @@ rs_context_read_config(struct rs_context *ctx, const char *config_file) r->timeout = cfg_getint (cfg_config, "timeout"); r->retries = cfg_getint (cfg_config, "retries"); - r->cacertfile = strdup (cfg_getstr (cfg_config, "cacertfile")); - /*r->cacertpath = strdup (cfg_getstr (cfg_config, "cacertpath"));*/ - r->certfile = strdup (cfg_getstr (cfg_config, "certfile")); - r->certkeyfile = strdup (cfg_getstr (cfg_config, "certkeyfile")); + r->cacertfile = cfg_getstr (cfg_config, "cacertfile"); + /*r->cacertpath = cfg_getstr (cfg_config, "cacertpath");*/ + r->certfile = cfg_getstr (cfg_config, "certfile"); + r->certkeyfile = cfg_getstr (cfg_config, "certkeyfile"); /* Add peers, one per server stanza. */ for (j = 0; j < cfg_size (cfg_config, "server"); j++) @@ -115,10 +120,13 @@ rs_context_read_config(struct rs_context *ctx, const char *config_file) cfg_server = cfg_getnsec (cfg_config, "server", j); _rs_resolv (&p->addr, r->type, cfg_getstr (cfg_server, "hostname"), cfg_getstr (cfg_server, "service")); - p->secret = strdup (cfg_getstr (cfg_server, "secret")); + p->secret = cfg_getstr (cfg_server, "secret"); } } - cfg_free (cfg); + + /* Save config object in context, for freeing in + rs_context_destroy(). */ + ctx->cfg = cfg; return RSE_OK; } -- cgit v1.1 From 5c60297a1eaab7b10d6f584ba329493a41b812d0 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Sun, 6 Mar 2011 15:53:58 +0100 Subject: Restructure code, moving most code out of packet.c Also, move copyright notice out of COPYING and into every file. --- lib/conf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/conf.c') diff --git a/lib/conf.c b/lib/conf.c index c8b2a46..1d394ba 100644 --- a/lib/conf.c +++ b/lib/conf.c @@ -1,4 +1,5 @@ -/* See the file COPYING for licensing information. */ +/* Copyright 2010, 2011 NORDUnet A/S. All rights reserved. + See the file COPYING for licensing information. */ #if defined HAVE_CONFIG_H #include -- cgit v1.1 From fac0219dad91c574417f78ec674aa0dd10949e15 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Wed, 9 Mar 2011 10:14:20 +0100 Subject: Rename and move around a few helper functions. --- lib/conf.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'lib/conf.c') diff --git a/lib/conf.c b/lib/conf.c index 1d394ba..7e27f0b 100644 --- a/lib/conf.c +++ b/lib/conf.c @@ -9,6 +9,7 @@ #include #include #include +#include "peer.h" #include "debug.h" #if 0 @@ -112,15 +113,15 @@ rs_context_read_config(struct rs_context *ctx, const char *config_file) /* Add peers, one per server stanza. */ for (j = 0; j < cfg_size (cfg_config, "server"); j++) { - struct rs_peer *p = _rs_peer_create (ctx, &r->peers); + struct rs_peer *p = peer_create (ctx, &r->peers); if (!p) return rs_err_ctx_push_fl (ctx, RSE_NOMEM, __FILE__, __LINE__, NULL); p->realm = r; cfg_server = cfg_getnsec (cfg_config, "server", j); - _rs_resolv (&p->addr, r->type, cfg_getstr (cfg_server, "hostname"), - cfg_getstr (cfg_server, "service")); + rs_resolv (&p->addr, r->type, cfg_getstr (cfg_server, "hostname"), + cfg_getstr (cfg_server, "service")); p->secret = cfg_getstr (cfg_server, "secret"); } } -- cgit v1.1 From 192dd27b23f9d982a47cad3a4eb88c2fcb3ff3e0 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Wed, 9 Mar 2011 23:10:08 +0100 Subject: Change default configuration to do RadSec rather than UDP. --- lib/conf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/conf.c') diff --git a/lib/conf.c b/lib/conf.c index 7e27f0b..14bc3ef 100644 --- a/lib/conf.c +++ b/lib/conf.c @@ -42,15 +42,15 @@ rs_context_read_config(struct rs_context *ctx, const char *config_file) cfg_opt_t server_opts[] = { CFG_STR ("hostname", NULL, CFGF_NONE), - CFG_STR ("service", "radius", CFGF_NONE), - CFG_STR ("secret", NULL, CFGF_NONE), + CFG_STR ("service", "2083", CFGF_NONE), + CFG_STR ("secret", "radsec", CFGF_NONE), CFG_END () }; cfg_opt_t config_opts[] = { CFG_STR ("type", "UDP", CFGF_NONE), - CFG_INT ("timeout", 2, CFGF_NONE), - CFG_INT ("retries", 2, CFGF_NONE), + CFG_INT ("timeout", 2, CFGF_NONE), /* FIXME: Remove? */ + CFG_INT ("retries", 2, CFGF_NONE), /* FIXME: Remove? */ CFG_STR ("cacertfile", NULL, CFGF_NONE), /*CFG_STR ("cacertpath", NULL, CFGF_NONE),*/ CFG_STR ("certfile", NULL, CFGF_NONE), -- cgit v1.1 From 73d7353cb7a244d08fdd8b6d14e01db4b00824b7 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Fri, 11 Mar 2011 13:18:44 +0100 Subject: Handle an ENOMEM case in conf.c. --- lib/conf.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/conf.c') diff --git a/lib/conf.c b/lib/conf.c index 14bc3ef..0f00fd8 100644 --- a/lib/conf.c +++ b/lib/conf.c @@ -89,6 +89,8 @@ rs_context_read_config(struct rs_context *ctx, const char *config_file) return rs_err_ctx_push_fl (ctx, RSE_CONFIG, __FILE__, __LINE__, "missing config name"); r->name = strdup (s); + if (!r->name) + return rs_err_ctx_push_fl (ctx, RSE_NOMEM, __FILE__, __LINE__, NULL); typestr = cfg_getstr (cfg_config, "type"); if (!strcmp (typestr, "UDP")) -- cgit v1.1