]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Simplify bld_princ.c
authorGreg Hudson <ghudson@mit.edu>
Thu, 21 Jun 2012 21:12:50 +0000 (17:12 -0400)
committerGreg Hudson <ghudson@mit.edu>
Thu, 21 Jun 2012 21:12:50 +0000 (17:12 -0400)
src/include/k5-int.h
src/lib/krb5/krb/bld_princ.c

index 28c86f84440f37cc738e933531f9df8e91e9bd1c..b1e535e598d825638aa6461a839274467ba12dde 100644 (file)
@@ -2471,15 +2471,6 @@ krb5_error_code krb5_use_natural_time(krb5_context);
 krb5_error_code krb5_set_time_offsets(krb5_context, krb5_timestamp,
                                       krb5_int32);
 
-/* Internal principal function used by KIM to avoid code duplication */
-krb5_error_code KRB5_CALLCONV
-krb5int_build_principal_alloc_va(krb5_context context,
-                                 krb5_principal *princ,
-                                 unsigned int rlen,
-                                 const char *realm,
-                                 const char *first,
-                                 va_list ap);
-
 /* Some data comparison and conversion functions.  */
 static inline int
 data_eq(krb5_data d1, krb5_data d2)
index 8c17ab382b381b6791f4621040bd1948b7c2494e..ba411a6cd91925250206c8d0f901d63fc8c476f8 100644 (file)
 #include <stdarg.h>
 #include "k5-int.h"
 
-/* Takes first component as argument for KIM API,
- * which does not allow realms with zero components */
 static krb5_error_code
-krb5int_build_principal_va(krb5_context context,
-                           krb5_principal princ,
-                           unsigned int rlen,
-                           const char *realm,
-                           const char *first,
-                           va_list ap)
+build_principal_va(krb5_context context, krb5_principal princ,
+                   unsigned int rlen, const char *realm, va_list ap)
 {
     krb5_error_code retval = 0;
     char *r = NULL;
@@ -52,33 +46,25 @@ krb5int_build_principal_va(krb5_context context,
         if (!r) { retval = ENOMEM; }
     }
 
-    if (!retval && first) {
-        data[0].length = strlen(first);
-        data[0].data = strdup(first);
-        if (!data[0].data) { retval = ENOMEM; }
-        count++;
-
-        /* ap is only valid if first is non-NULL */
-        while (!retval && (component = va_arg(ap, char *))) {
-            if (count == size) {
-                krb5_data *new_data = NULL;
-
-                size *= 2;
-                new_data = realloc ((char *) data, sizeof(krb5_data) * size);
-                if (new_data) {
-                    data = new_data;
-                } else {
-                    retval = ENOMEM;
-                }
-            }
+    while (!retval && (component = va_arg(ap, char *))) {
+        if (count == size) {
+            krb5_data *new_data = NULL;
 
-            if (!retval) {
-                data[count].length = strlen(component);
-                data[count].data = strdup(component);
-                if (!data[count].data) { retval = ENOMEM; }
-                count++;
+            size *= 2;
+            new_data = realloc(data, size * sizeof(krb5_data));
+            if (new_data) {
+                data = new_data;
+            } else {
+                retval = ENOMEM;
             }
         }
+
+        if (!retval) {
+            data[count].length = strlen(component);
+            data[count].data = strdup(component);
+            if (!data[count].data) { retval = ENOMEM; }
+            count++;
+        }
     }
 
     if (!retval) {
@@ -110,37 +96,7 @@ krb5_build_principal_va(krb5_context context,
                         const char *realm,
                         va_list ap)
 {
-    char *first = va_arg(ap, char *);
-
-    return krb5int_build_principal_va(context, princ, rlen, realm, first, ap);
-}
-
-/* Takes first component as argument for KIM API,
- * which does not allow realms with zero components */
-krb5_error_code KRB5_CALLCONV
-krb5int_build_principal_alloc_va(krb5_context context,
-                                 krb5_principal *princ,
-                                 unsigned int rlen,
-                                 const char *realm,
-                                 const char *first,
-                                 va_list ap)
-{
-    krb5_error_code retval = 0;
-
-    krb5_principal p = malloc(sizeof(krb5_principal_data));
-    if (!p) { retval = ENOMEM; }
-
-    if (!retval) {
-        retval = krb5int_build_principal_va(context, p, rlen, realm, first, ap);
-    }
-
-    if (!retval) {
-        *princ = p;
-    } else {
-        free(p);
-    }
-
-    return retval;
+    return build_principal_va(context, princ, rlen, realm, ap);
 }
 
 krb5_error_code KRB5_CALLCONV
@@ -152,14 +108,12 @@ krb5_build_principal_alloc_va(krb5_context context,
 {
     krb5_error_code retval = 0;
     krb5_principal p;
-    char *first;
 
     p = malloc(sizeof(krb5_principal_data));
     if (p == NULL)
         return ENOMEM;
 
-    first = va_arg(ap, char *);
-    retval = krb5int_build_principal_va(context, p, rlen, realm, first, ap);
+    retval = build_principal_va(context, p, rlen, realm, ap);
     if (retval) {
         free(p);
         return retval;