From a177887c740c173948fc7dbf96f726616885c407 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Mon, 21 Mar 2011 14:32:31 +0100 Subject: [PATCH] Memory alloc/free cleanup for contexts. (rs_context_create): Don't touch *ctx on failure. Keep allocation and zeroing of allocated memory together. (rs_context_destroy): Fix typo. (rs_context_destroy): Don't rs_free the context since it's allocated with calloc. --- lib/radsec.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/radsec.c b/lib/radsec.c index c7ba68c..6e68950 100644 --- a/lib/radsec.c +++ b/lib/radsec.c @@ -32,10 +32,8 @@ rs_context_create (struct rs_context **ctx) { 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) @@ -47,11 +45,10 @@ rs_context_create (struct rs_context **ctx) #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; @@ -158,7 +155,7 @@ rs_context_destroy (struct rs_context *ctx) p = p->next; rs_free (ctx, tmp); } - free (ctx, r->name); + free (r->name); r = r->next; rs_free (ctx, tmp); } @@ -174,7 +171,7 @@ rs_context_destroy (struct rs_context *ctx) rs_free (ctx, ctx->config); } - rs_free (ctx, ctx); + free (ctx); } int -- 2.1.4