[26509] in CVS-changelog-for-Kerberos-V5

home help back first fref pref prev next nref lref last post

svn rev #25840: trunk/src/lib/krb5/krb/

daemon@ATHENA.MIT.EDU (ghudson@mit.edu)
Mon Apr 30 19:33:44 2012

Date: Mon, 30 Apr 2012 19:33:39 -0400
From: ghudson@mit.edu
Message-Id: <201204302333.q3UNXdNV005013@drugstore.mit.edu>
To: cvs-krb5@mit.edu
Reply-To: krbdev@mit.edu
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: cvs-krb5-bounces@mit.edu

http://src.mit.edu/fisheye/changelog/krb5/?cs=25840
Commit By: ghudson
Log Message:
Simplify preauth2 helper functions using realloc


Changed Files:
U   trunk/src/lib/krb5/krb/preauth2.c
Modified: trunk/src/lib/krb5/krb/preauth2.c
===================================================================
--- trunk/src/lib/krb5/krb/preauth2.c	2012-04-27 22:40:21 UTC (rev 25839)
+++ trunk/src/lib/krb5/krb/preauth2.c	2012-04-30 23:33:38 UTC (rev 25840)
@@ -312,65 +312,36 @@
 {
     int i;
     krb5_enctype *ktypes;
+
     for (i = 0; i < *out_nktypes; i++) {
         if ((*out_ktypes)[i] == ktype)
             return;
     }
-    ktypes = malloc((*out_nktypes + 2) * sizeof(ktype));
-    if (ktypes) {
-        for (i = 0; i < *out_nktypes; i++)
-            ktypes[i] = (*out_ktypes)[i];
-        ktypes[i++] = ktype;
-        ktypes[i] = 0;
-        free(*out_ktypes);
+    ktypes = realloc(*out_ktypes, (*out_nktypes + 2) * sizeof(ktype));
+    if (ktypes != NULL) {
         *out_ktypes = ktypes;
-        *out_nktypes = i;
+        ktypes[(*out_nktypes)++] = ktype;
+        ktypes[*out_nktypes] = 0;
     }
 }
 
-/*
- * Add the given list of pa_data items to the existing list of items.
- * Factored out here to make reading the do_preauth logic easier to read.
- */
+/* Add a list of new pa_data items to an existing list. */
 static int
 grow_pa_list(krb5_pa_data ***out_pa_list, int *out_pa_list_size,
              krb5_pa_data **addition, int num_addition)
 {
     krb5_pa_data **pa_list;
-    int i, j;
+    int i;
 
-    if (out_pa_list == NULL || addition == NULL) {
-        return EINVAL;
-    }
-
-    if (*out_pa_list == NULL) {
-        /* Allocate room for the new additions and a NULL terminator. */
-        pa_list = malloc((num_addition + 1) * sizeof(krb5_pa_data *));
-        if (pa_list == NULL)
-            return ENOMEM;
-        for (i = 0; i < num_addition; i++)
-            pa_list[i] = addition[i];
-        pa_list[i] = NULL;
-        *out_pa_list = pa_list;
-        *out_pa_list_size = num_addition;
-    } else {
-        /*
-         * Allocate room for the existing entries plus
-         * the new additions and a NULL terminator.
-         */
-        pa_list = malloc((*out_pa_list_size + num_addition + 1)
-                         * sizeof(krb5_pa_data *));
-        if (pa_list == NULL)
-            return ENOMEM;
-        for (i = 0; i < *out_pa_list_size; i++)
-            pa_list[i] = (*out_pa_list)[i];
-        for (j = 0; j < num_addition;)
-            pa_list[i++] = addition[j++];
-        pa_list[i] = NULL;
-        free(*out_pa_list);
-        *out_pa_list = pa_list;
-        *out_pa_list_size = i;
-    }
+    /* Allocate space for new entries and a null terminator. */
+    pa_list = realloc(*out_pa_list, (*out_pa_list_size + num_addition + 1) *
+                      sizeof(*pa_list));
+    if (pa_list == NULL)
+        return ENOMEM;
+    *out_pa_list = pa_list;
+    for (i = 0; i < num_addition; i++)
+        pa_list[(*out_pa_list_size)++] = addition[i];
+    pa_list[*out_pa_list_size] = NULL;
     return 0;
 }
 

_______________________________________________
cvs-krb5 mailing list
cvs-krb5@mit.edu
https://mailman.mit.edu/mailman/listinfo/cvs-krb5

home help back first fref pref prev next nref lref last post