summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/krb/bld_princ.c86
1 files changed, 20 insertions, 66 deletions
diff --git a/src/lib/krb5/krb/bld_princ.c b/src/lib/krb5/krb/bld_princ.c
index 8c17ab382b..ba411a6cd9 100644
--- a/src/lib/krb5/krb/bld_princ.c
+++ b/src/lib/krb5/krb/bld_princ.c
@@ -27,15 +27,9 @@
#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;