[05/10] secur32: Implement FreeCredentialsHandle for Kerberos.
Hans Leidekker
hans at codeweavers.com
Mon Oct 16 03:04:58 CDT 2017
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
dlls/secur32/kerberos.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/dlls/secur32/kerberos.c b/dlls/secur32/kerberos.c
index 7704b1590f..3e0f3c8bb9 100644
--- a/dlls/secur32/kerberos.c
+++ b/dlls/secur32/kerberos.c
@@ -587,10 +587,30 @@ static SECURITY_STATUS SEC_ENTRY kerberos_VerifySignature(CtxtHandle *phContext,
/***********************************************************************
* FreeCredentialsHandle
*/
-static SECURITY_STATUS SEC_ENTRY kerberos_FreeCredentialsHandle(PCredHandle phCredential)
+static SECURITY_STATUS SEC_ENTRY kerberos_FreeCredentialsHandle( CredHandle *phCredential )
{
- FIXME("(%p)\n", phCredential);
+#ifdef HAVE_GSSAPI
+ OM_uint32 ret, minor_status;
+ gss_cred_id_t cred_handle;
+ gss_name_t principal;
+
+ TRACE( "(%p)\n", phCredential );
+
+ if (!phCredential) return SEC_E_INVALID_HANDLE;
+ if (!(cred_handle = credhandle_sspi_to_gss( phCredential, &principal ))) return SEC_E_OK;
+
+ if (principal != GSS_C_NO_NAME) gss_release_name( &minor_status, &principal );
+ ret = gss_release_cred( &minor_status, &cred_handle );
+ TRACE( "gss_release_cred returned %08x minor status %08x\n", ret, minor_status );
+
+ phCredential->dwUpper = 0;
+ phCredential->dwLower = 0;
+
+ return status_gss_to_sspi( ret );
+#else
+ FIXME( "(%p)\n", phCredential );
return SEC_E_UNSUPPORTED_FUNCTION;
+#endif
}
/***********************************************************************
--
2.11.0
More information about the wine-patches
mailing list