kdc: conform _kdc_make_anonymous_principalname() to RFC8062

The utility function _kdc_make_anonymous_principalname() previously returned a
principal of "anonymous" rather than "WELLKNOWN/ANONYMOUS", as specified by
RFC8062. This is not used by the AS-REQ code.
This commit is contained in:
Luke Howard
2019-05-02 17:02:32 +10:00
committed by Jeffrey Altman
parent 7a7eb9de2f
commit 5c8f48495e

View File

@@ -251,18 +251,30 @@ _kdc_find_etype(krb5_context context, krb5_boolean use_strongest_session_key,
krb5_error_code krb5_error_code
_kdc_make_anonymous_principalname (PrincipalName *pn) _kdc_make_anonymous_principalname (PrincipalName *pn)
{ {
pn->name_type = KRB5_NT_PRINCIPAL; pn->name_type = KRB5_NT_WELLKNOWN;
pn->name_string.len = 1; pn->name_string.len = 2;
pn->name_string.val = malloc(sizeof(*pn->name_string.val)); pn->name_string.val = calloc(2, sizeof(*pn->name_string.val));
if (pn->name_string.val == NULL) if (pn->name_string.val == NULL)
return ENOMEM; goto failed;
pn->name_string.val[0] = strdup("anonymous");
if (pn->name_string.val[0] == NULL) { pn->name_string.val[0] = strdup(KRB5_WELLKNOWN_NAME);
free(pn->name_string.val); if (pn->name_string.val[0] == NULL)
pn->name_string.val = NULL; goto failed;
return ENOMEM;
} pn->name_string.val[1] = strdup(KRB5_ANON_NAME);
if (pn->name_string.val[1] == NULL)
goto failed;
return 0; return 0;
failed:
free_PrincipalName(pn);
pn->name_type = KRB5_NT_UNKNOWN;
pn->name_string.len = 0;
pn->name_string.val = NULL;
return ENOMEM;
} }
static void static void