New krb5_parse_name_flags_realm supports explicit default realm.

Set the realm argument to NULL to get the usual default realm.

The krb5_parse_name_flags() function is now a wrapper around
krb5_parse_name_flags_realm().
This commit is contained in:
Viktor Dukhovni
2013-05-15 19:39:38 -04:00
committed by Viktor Dukhovni
parent 01fff2ca9c
commit a2127d091d
3 changed files with 33 additions and 1 deletions

View File

@@ -479,6 +479,7 @@ 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

View File

@@ -188,6 +188,30 @@ 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;
@@ -320,10 +344,16 @@ krb5_parse_name_flags(krb5_context context,
goto exit;
} else if (flags & KRB5_PRINCIPAL_PARSE_NO_REALM) {
realm = NULL;
} else {
} else if (def_realm == NULL) {
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);

View File

@@ -472,6 +472,7 @@ 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;