diff --git a/lib/gssapi/acquire_cred.c b/lib/gssapi/acquire_cred.c index 43e56432c..e765b3940 100644 --- a/lib/gssapi/acquire_cred.c +++ b/lib/gssapi/acquire_cred.c @@ -239,12 +239,21 @@ static OM_uint32 acquire_acceptor_cred { OM_uint32 ret; krb5_error_code kret; + krb5_keytab_entry entry; kret = 0; ret = GSS_S_FAILURE; kret = get_keytab(&handle->keytab); if (kret) goto end; + + /* check that the requested principal exists in the keytab */ + kret = krb5_kt_get_entry(gssapi_krb5_context, handle->keytab, + handle->principal, 0, 0, &entry); + if (kret) + goto end; + krb5_kt_free_entry(gssapi_krb5_context, &entry); + ret = GSS_S_COMPLETE; end: diff --git a/lib/gssapi/krb5/acquire_cred.c b/lib/gssapi/krb5/acquire_cred.c index 43e56432c..e765b3940 100644 --- a/lib/gssapi/krb5/acquire_cred.c +++ b/lib/gssapi/krb5/acquire_cred.c @@ -239,12 +239,21 @@ static OM_uint32 acquire_acceptor_cred { OM_uint32 ret; krb5_error_code kret; + krb5_keytab_entry entry; kret = 0; ret = GSS_S_FAILURE; kret = get_keytab(&handle->keytab); if (kret) goto end; + + /* check that the requested principal exists in the keytab */ + kret = krb5_kt_get_entry(gssapi_krb5_context, handle->keytab, + handle->principal, 0, 0, &entry); + if (kret) + goto end; + krb5_kt_free_entry(gssapi_krb5_context, &entry); + ret = GSS_S_COMPLETE; end: