OM_uint32 GSSAPI_CALLCONV _gss_ntlm_delete_sec_context (OM_uint32 * minor_status, gss_ctx_id_t * context_handle, gss_buffer_t output_token ) { if (context_handle) { ntlm_ctx ctx = (ntlm_ctx)*context_handle; gss_cred_id_t cred = (gss_cred_id_t)ctx->client; *context_handle = GSS_C_NO_CONTEXT; if (ctx->server) (*ctx->server->nsi_destroy)(minor_status, ctx->ictx); _gss_ntlm_release_cred(NULL, &cred); memset(ctx, 0, sizeof(*ctx)); free(ctx); } if (output_token) { output_token->length = 0; output_token->value = NULL; } *minor_status = 0; return GSS_S_COMPLETE; }
OM_uint32 GSSAPI_CALLCONV _gss_ntlm_destroy_cred(OM_uint32 *minor_status, gss_cred_id_t *cred_handle) { #ifdef HAVE_KCM krb5_error_code ret; #endif if (cred_handle == NULL || *cred_handle == GSS_C_NO_CREDENTIAL) return GSS_S_COMPLETE; #ifdef HAVE_KCM ret = _gss_ntlm_destroy_kcm_cred(cred_handle); if (ret) { *minor_status = ret; return GSS_S_FAILURE; } #endif return _gss_ntlm_release_cred(minor_status, cred_handle); }