The NegoEx gss_{exchange,query}_meta_data functions set allocated_ctx but never
did anything with it. Use it to determine whether we should free the context
handle on error.
_gss_mg_error(m, *minor_status);
cleanup:
- if (major_status != GSS_S_COMPLETE || ctx->gc_ctx == GSS_C_NO_CONTEXT)
+ if (allocated_ctx && major_status != GSS_S_COMPLETE)
gss_delete_sec_context(&junk, (gss_ctx_id_t *)&ctx, GSS_C_NO_BUFFER);
*context_handle = (gss_ctx_id_t) ctx;
_gss_mg_error(m, *minor_status);
cleanup:
- if (major_status != GSS_S_COMPLETE || ctx->gc_ctx == GSS_C_NO_CONTEXT)
+ if (allocated_ctx && major_status != GSS_S_COMPLETE)
gss_delete_sec_context(&junk, (gss_ctx_id_t *)&ctx, GSS_C_NO_BUFFER);
*context_handle = (gss_ctx_id_t) ctx;