{
struct rs_context *h;
- if (ctx)
- *ctx = NULL;
- h = (struct rs_context *) malloc (sizeof(struct rs_context));
- if (!h)
+ h = calloc (1, sizeof(*h));
+ if (h == NULL)
return RSE_NOMEM;
#if defined (RS_ENABLE_TLS)
#endif
debug_init ("libradsec"); /* radsecproxy compat, FIXME: remove */
- memset (h, 0, sizeof(struct rs_context));
fr_randinit (&h->fr_randctx, 0);
fr_rand_seed (NULL, 0);
- if (ctx)
+ if (ctx != NULL)
*ctx = h;
return RSE_OK;
char *fn = NULL;
if (dict == NULL)
- if (ctx->config != NULL)
+ if (ctx->config != NULL && ctx->config->dictionary)
dict = ctx->config->dictionary;
if (dict == NULL)
- return rs_err_ctx_push_fl (ctx, RSE_INVAL, __FILE__, __LINE__,
- "missing dictionary");
+ dict = RS_FREERADIUS_DICT;
dictlen = strlen (dict);
dir = rs_calloc (ctx, 1, dictlen + 1);
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;
}
return r;
}
-struct rs_error * /* FIXME: Return int as all the others? */
+struct rs_error *
rs_resolv (struct evutil_addrinfo **addr,
rs_conn_type_t type,
const char *hostname,
struct evutil_addrinfo hints, *res = NULL;
memset (&hints, 0, sizeof(struct evutil_addrinfo));
- hints.ai_family = AF_INET; /* IPv4 only. TODO: Set AF_UNSPEC. */
+ hints.ai_family = AF_UNSPEC;
hints.ai_flags = AI_ADDRCONFIG;
switch (type)
{
p = p->next;
rs_free (ctx, tmp);
}
- rs_free (ctx, r->name); /* FIXME: Stop freeing once we stop strdup in rs_context_read_config(). */
+ free (r->name);
+ rs_free (ctx, r->transport_cred);
r = r->next;
rs_free (ctx, tmp);
}
rs_free (ctx, ctx->config);
}
- rs_free (ctx, ctx);
+ free (ctx);
}
int