diff --git a/kuser/kinit.c b/kuser/kinit.c index bcb4e00e7..d429bab67 100644 --- a/kuser/kinit.c +++ b/kuser/kinit.c @@ -762,6 +762,17 @@ renew_func(void *ptr) return expire / 2 + 1; } +static void +set_princ_realm(krb5_context context, + krb5_principal principal, + const char *realm) +{ + krb5_error_code ret; + + if ((ret = krb5_principal_set_realm(context, principal, realm)) != 0) + krb5_err(context, 1, ret, "krb5_principal_set_realm"); +} + static void parse_name_realm(krb5_context context, const char *name, @@ -770,10 +781,13 @@ parse_name_realm(krb5_context context, krb5_principal *princ) { krb5_error_code ret; - - ret = krb5_parse_name_flags_realm(context, name, flags, realm, princ); - if (ret) - krb5_err(context, 1, ret, "krb5_parse_name_flags_realm"); + + if (realm) + flags |= KRB5_PRINCIPAL_PARSE_NO_DEF_REALM; + if ((ret = krb5_parse_name_flags(context, name, flags, princ)) != 0) + krb5_err(context, 1, ret, "krb5_parse_name_flags"); + if (realm && krb5_principal_get_realm(context, *princ) == NULL) + set_princ_realm(context, *princ, realm); } static char * @@ -796,17 +810,6 @@ get_default_principal(krb5_context context, krb5_principal *princ) krb5_err(context, 1, ret, "krb5_get_default_principal"); } -static void -set_princ_realm(krb5_context context, - krb5_principal principal, - const char *realm) -{ - krb5_error_code ret; - - if ((ret = krb5_principal_set_realm(context, principal, realm)) != 0) - krb5_err(context, 1, ret, "krb5_principal_set_realm"); -} - static char * get_user_realm(krb5_context context) { diff --git a/lib/krb5/libkrb5-exports.def.in b/lib/krb5/libkrb5-exports.def.in index c6a6d12f4..b032f3594 100644 --- a/lib/krb5/libkrb5-exports.def.in +++ b/lib/krb5/libkrb5-exports.def.in @@ -479,7 +479,6 @@ EXPORTS krb5_parse_address krb5_parse_name krb5_parse_name_flags - krb5_parse_name_flags_realm krb5_parse_nametype krb5_passwd_result_to_string krb5_password_key_proc diff --git a/lib/krb5/principal.c b/lib/krb5/principal.c index bab6ba068..ebd752790 100644 --- a/lib/krb5/principal.c +++ b/lib/krb5/principal.c @@ -188,30 +188,6 @@ krb5_parse_name_flags(krb5_context context, const char *name, int flags, krb5_principal *principal) -{ - return krb5_parse_name_flags_realm(context, name, flags, NULL, principal); -} - -/** - * Parse a name into a krb5_principal structure, flags controls the behavior. - * - * @param context Kerberos 5 context - * @param name name to parse into a Kerberos principal - * @param flags flags to control the behavior - * @param realm, default realm, uses config-default if NULL. - * @param principal returned principal, free with krb5_free_principal(). - * - * @return An krb5 error code, see krb5_get_error_message(). - * - * @ingroup krb5_principal - */ - -KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL -krb5_parse_name_flags_realm(krb5_context context, - const char *name, - int flags, - const char *def_realm, - krb5_principal *principal) { krb5_error_code ret; heim_general_string *comp; @@ -347,16 +323,10 @@ krb5_parse_name_flags_realm(krb5_context context, goto exit; } else if (no_realm || no_def_realm) { realm = NULL; - } else if (def_realm == NULL) { + } else { ret = krb5_get_default_realm(context, &realm); if (ret) goto exit; - } else { - realm = strdup(def_realm); - if (realm == NULL) { - ret = krb5_enomem(context); - goto exit; - } } comp[n] = malloc(q - start + 1); diff --git a/lib/krb5/version-script.map b/lib/krb5/version-script.map index 73db02aca..0c11ca0b2 100644 --- a/lib/krb5/version-script.map +++ b/lib/krb5/version-script.map @@ -472,7 +472,6 @@ HEIMDAL_KRB5_2.0 { krb5_parse_address; krb5_parse_name; krb5_parse_name_flags; - krb5_parse_name_flags_realm; krb5_parse_nametype; krb5_passwd_result_to_string; krb5_password_key_proc;