From c730a837fd48fa470cedae1399c5ba8b725c4cdf Mon Sep 17 00:00:00 2001 From: akallabeth Date: Thu, 15 Jan 2026 09:40:02 +0100 Subject: [PATCH] [winpr,sspi] fix krb5_ccache initialization Ensure the cache is either initialized and valid or abort in kerberos_AcquireCredentialsHandleA --- winpr/libwinpr/sspi/Kerberos/kerberos.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/winpr/libwinpr/sspi/Kerberos/kerberos.c b/winpr/libwinpr/sspi/Kerberos/kerberos.c index 68052abd8..1263ec6fa 100644 --- a/winpr/libwinpr/sspi/Kerberos/kerberos.c +++ b/winpr/libwinpr/sspi/Kerberos/kerberos.c @@ -397,7 +397,12 @@ static SECURITY_STATUS SEC_ENTRY kerberos_AcquireCredentialsHandleA( goto cleanup; } else + { + if (krb_log_exec(krb5_cc_default, ctx, &ccache)) + goto cleanup; own_ccache = FALSE; + } + WINPR_ASSERT(ccache); } else if (fCredentialUse & SECPKG_CRED_OUTBOUND) { @@ -406,6 +411,7 @@ static SECURITY_STATUS SEC_ENTRY kerberos_AcquireCredentialsHandleA( goto cleanup; if (krb_log_exec(krb5_cc_get_principal, ctx, ccache, &principal)) goto cleanup; + WINPR_ASSERT(ccache); own_ccache = FALSE; } else @@ -420,6 +426,7 @@ static SECURITY_STATUS SEC_ENTRY kerberos_AcquireCredentialsHandleA( if (krb_log_exec(krb5_cc_resolve, ctx, krb_settings->cache, &ccache)) goto cleanup; } + WINPR_ASSERT(ccache); } if (krb_settings && krb_settings->keytab) @@ -446,6 +453,8 @@ static SECURITY_STATUS SEC_ENTRY kerberos_AcquireCredentialsHandleA( matchCreds.client = principal; WINPR_ASSERT(principal); + WINPR_ASSERT(ctx); + WINPR_ASSERT(ccache); if (krb_log_exec(build_krbtgt, ctx, principal, &matchCreds.server)) goto cleanup;