Simplify user_realm support by removing krb5_parse_name_flags_realm()
and setting the realm as necessary in the caller.
This commit is contained in:

committed by
Viktor Dukhovni

parent
203e2beedd
commit
2433496ea6
@@ -762,6 +762,17 @@ renew_func(void *ptr)
|
|||||||
return expire / 2 + 1;
|
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
|
static void
|
||||||
parse_name_realm(krb5_context context,
|
parse_name_realm(krb5_context context,
|
||||||
const char *name,
|
const char *name,
|
||||||
@@ -771,9 +782,12 @@ parse_name_realm(krb5_context context,
|
|||||||
{
|
{
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
|
|
||||||
ret = krb5_parse_name_flags_realm(context, name, flags, realm, princ);
|
if (realm)
|
||||||
if (ret)
|
flags |= KRB5_PRINCIPAL_PARSE_NO_DEF_REALM;
|
||||||
krb5_err(context, 1, ret, "krb5_parse_name_flags_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 *
|
static char *
|
||||||
@@ -796,17 +810,6 @@ get_default_principal(krb5_context context, krb5_principal *princ)
|
|||||||
krb5_err(context, 1, ret, "krb5_get_default_principal");
|
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 *
|
static char *
|
||||||
get_user_realm(krb5_context context)
|
get_user_realm(krb5_context context)
|
||||||
{
|
{
|
||||||
|
@@ -479,7 +479,6 @@ EXPORTS
|
|||||||
krb5_parse_address
|
krb5_parse_address
|
||||||
krb5_parse_name
|
krb5_parse_name
|
||||||
krb5_parse_name_flags
|
krb5_parse_name_flags
|
||||||
krb5_parse_name_flags_realm
|
|
||||||
krb5_parse_nametype
|
krb5_parse_nametype
|
||||||
krb5_passwd_result_to_string
|
krb5_passwd_result_to_string
|
||||||
krb5_password_key_proc
|
krb5_password_key_proc
|
||||||
|
@@ -188,30 +188,6 @@ krb5_parse_name_flags(krb5_context context,
|
|||||||
const char *name,
|
const char *name,
|
||||||
int flags,
|
int flags,
|
||||||
krb5_principal *principal)
|
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;
|
krb5_error_code ret;
|
||||||
heim_general_string *comp;
|
heim_general_string *comp;
|
||||||
@@ -347,16 +323,10 @@ krb5_parse_name_flags_realm(krb5_context context,
|
|||||||
goto exit;
|
goto exit;
|
||||||
} else if (no_realm || no_def_realm) {
|
} else if (no_realm || no_def_realm) {
|
||||||
realm = NULL;
|
realm = NULL;
|
||||||
} else if (def_realm == NULL) {
|
} else {
|
||||||
ret = krb5_get_default_realm(context, &realm);
|
ret = krb5_get_default_realm(context, &realm);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto exit;
|
goto exit;
|
||||||
} else {
|
|
||||||
realm = strdup(def_realm);
|
|
||||||
if (realm == NULL) {
|
|
||||||
ret = krb5_enomem(context);
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
comp[n] = malloc(q - start + 1);
|
comp[n] = malloc(q - start + 1);
|
||||||
|
@@ -472,7 +472,6 @@ HEIMDAL_KRB5_2.0 {
|
|||||||
krb5_parse_address;
|
krb5_parse_address;
|
||||||
krb5_parse_name;
|
krb5_parse_name;
|
||||||
krb5_parse_name_flags;
|
krb5_parse_name_flags;
|
||||||
krb5_parse_name_flags_realm;
|
|
||||||
krb5_parse_nametype;
|
krb5_parse_nametype;
|
||||||
krb5_passwd_result_to_string;
|
krb5_passwd_result_to_string;
|
||||||
krb5_password_key_proc;
|
krb5_password_key_proc;
|
||||||
|
Reference in New Issue
Block a user