Memory alloc/free cleanup for contexts.
authorLinus Nordberg <linus@nordu.net>
Mon, 21 Mar 2011 13:32:31 +0000 (14:32 +0100)
committerLinus Nordberg <linus@nordu.net>
Mon, 21 Mar 2011 13:32:31 +0000 (14:32 +0100)
(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

index c7ba68c..6e68950 100644 (file)
@@ -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