Exemple #1
0
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;
}
Exemple #2
0
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);
}