More consistent error checks in build_principal()
Signed-off-by: Love Hornquist Astrand <lha@h5l.org>
This commit is contained in:

committed by
Love Hornquist Astrand

parent
a825143e73
commit
9ca0a2b62f
@@ -747,30 +747,38 @@ append_component(krb5_context context, krb5_principal p,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static krb5_error_code
|
||||||
va_ext_princ(krb5_context context, krb5_principal p, va_list ap)
|
va_ext_princ(krb5_context context, krb5_principal p, va_list ap)
|
||||||
{
|
{
|
||||||
while(1){
|
krb5_error_code ret = 0;
|
||||||
|
|
||||||
|
while (1){
|
||||||
const char *s;
|
const char *s;
|
||||||
int len;
|
int len;
|
||||||
len = va_arg(ap, int);
|
|
||||||
if(len == 0)
|
if ((len = va_arg(ap, int)) == 0)
|
||||||
break;
|
break;
|
||||||
s = va_arg(ap, const char*);
|
s = va_arg(ap, const char*);
|
||||||
append_component(context, p, s, len);
|
if ((ret = append_component(context, p, s, len)) != 0)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static krb5_error_code
|
||||||
va_princ(krb5_context context, krb5_principal p, va_list ap)
|
va_princ(krb5_context context, krb5_principal p, va_list ap)
|
||||||
{
|
{
|
||||||
while(1){
|
krb5_error_code ret = 0;
|
||||||
|
|
||||||
|
while (1){
|
||||||
const char *s;
|
const char *s;
|
||||||
s = va_arg(ap, const char*);
|
|
||||||
if(s == NULL)
|
if ((s = va_arg(ap, const char*)) == NULL)
|
||||||
|
break;
|
||||||
|
if ((ret = append_component(context, p, s, strlen(s))) != 0)
|
||||||
break;
|
break;
|
||||||
append_component(context, p, s, strlen(s));
|
|
||||||
}
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static krb5_error_code
|
static krb5_error_code
|
||||||
@@ -778,9 +786,10 @@ build_principal(krb5_context context,
|
|||||||
krb5_principal *principal,
|
krb5_principal *principal,
|
||||||
int rlen,
|
int rlen,
|
||||||
krb5_const_realm realm,
|
krb5_const_realm realm,
|
||||||
void (*func)(krb5_context, krb5_principal, va_list),
|
krb5_error_code (*func)(krb5_context, krb5_principal, va_list),
|
||||||
va_list ap)
|
va_list ap)
|
||||||
{
|
{
|
||||||
|
krb5_error_code ret;
|
||||||
krb5_principal p;
|
krb5_principal p;
|
||||||
|
|
||||||
p = calloc(1, sizeof(*p));
|
p = calloc(1, sizeof(*p));
|
||||||
@@ -789,14 +798,17 @@ build_principal(krb5_context context,
|
|||||||
princ_type(p) = KRB5_NT_PRINCIPAL;
|
princ_type(p) = KRB5_NT_PRINCIPAL;
|
||||||
|
|
||||||
princ_realm(p) = strdup(realm);
|
princ_realm(p) = strdup(realm);
|
||||||
if(p->realm == NULL){
|
if (p->realm == NULL) {
|
||||||
free(p);
|
free(p);
|
||||||
return krb5_enomem(context);
|
return krb5_enomem(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
(*func)(context, p, ap);
|
ret = func(context, p, ap);
|
||||||
|
if (ret == 0)
|
||||||
*principal = p;
|
*principal = p;
|
||||||
return 0;
|
else
|
||||||
|
krb5_free_principal(context, p);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
|
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
|
||||||
|
Reference in New Issue
Block a user