From 7e9149e6aa12e3105612f53d3bbf7d14e84835d4 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Tue, 26 Aug 2025 13:56:05 +0200 Subject: [PATCH] [winpr,sspi] fix Heimdal compatibility --- winpr/libwinpr/sspi/Kerberos/kerberos.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/winpr/libwinpr/sspi/Kerberos/kerberos.c b/winpr/libwinpr/sspi/Kerberos/kerberos.c index a2310f6cb..2d6f9ffd2 100644 --- a/winpr/libwinpr/sspi/Kerberos/kerberos.c +++ b/winpr/libwinpr/sspi/Kerberos/kerberos.c @@ -1335,6 +1335,16 @@ static BOOL retrieveSomeTgt(KRB_CREDENTIALS* credentials, const char* target, kr if (rv) return FALSE; +#if defined(WITH_KRB5_HEIMDAL) + if (!target_princ->realm) + { + rv = krb_log_exec(krb5_get_default_realm, credentials->ctx, &default_realm); + if (rv) + goto out; + + target_princ->realm = default_realm; + } +#else if (!target_princ->realm.length) { rv = krb_log_exec(krb5_get_default_realm, credentials->ctx, &default_realm); @@ -1344,6 +1354,7 @@ static BOOL retrieveSomeTgt(KRB_CREDENTIALS* credentials, const char* target, kr target_princ->realm.data = default_realm; target_princ->realm.length = (unsigned int)strlen(default_realm); } +#endif /* * First try with the account service. We were requested with something like @@ -1356,6 +1367,7 @@ static BOOL retrieveSomeTgt(KRB_CREDENTIALS* credentials, const char* target, kr ret = FALSE; +#if defined(WITH_KRB5_MIT) /* * if it's not working let's try with $@ (note the dollar) */ @@ -1372,6 +1384,7 @@ static BOOL retrieveSomeTgt(KRB_CREDENTIALS* credentials, const char* target, kr return FALSE; ret = retrieveTgtForPrincipal(credentials, target_princ, creds); +#endif out: if (default_realm)