[04/10] secur32: Implement DeleteSecurityContext for Kerberos.

Hans Leidekker hans at codeweavers.com
Mon Oct 23 04:09:19 CDT 2017


Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 dlls/secur32/kerberos.c | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/dlls/secur32/kerberos.c b/dlls/secur32/kerberos.c
index 474943e10c..52554c5924 100644
--- a/dlls/secur32/kerberos.c
+++ b/dlls/secur32/kerberos.c
@@ -559,10 +559,27 @@ static SECURITY_STATUS SEC_ENTRY kerberos_CompleteAuthToken(CtxtHandle *phContex
 /***********************************************************************
  *              DeleteSecurityContext
  */
-static SECURITY_STATUS SEC_ENTRY kerberos_DeleteSecurityContext(CtxtHandle *phContext)
+static SECURITY_STATUS SEC_ENTRY kerberos_DeleteSecurityContext( CtxtHandle *phContext )
 {
-    FIXME("(%p)\n", phContext);
+#ifdef SONAME_LIBGSSAPI_KRB5
+    OM_uint32 ret, minor_status;
+    gss_ctx_id_t ctxt_handle;
+
+    TRACE( "(%p)\n", phContext );
+    if (!phContext) return SEC_E_INVALID_HANDLE;
+    if (!(ctxt_handle = ctxthandle_sspi_to_gss( phContext ))) return SEC_E_OK;
+
+    ret = pgss_delete_sec_context( &minor_status, &ctxt_handle, GSS_C_NO_BUFFER );
+    TRACE( "gss_delete_sec_context returned %08x minor status %08x\n", ret, minor_status );
+
+    phContext->dwUpper = 0;
+    phContext->dwLower = 0;
+
+    return status_gss_to_sspi( ret );
+#else
+    FIXME( "(%p)\n", phContext );
     return SEC_E_UNSUPPORTED_FUNCTION;
+#endif
 }
 
 /***********************************************************************
-- 
2.11.0




More information about the wine-patches mailing list