gss: honor allocated_ctx in gss_{exchange,query}_meta_data
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.
This commit is contained in:
@@ -104,7 +104,7 @@ gssspi_exchange_meta_data(
|
|||||||
_gss_mg_error(m, *minor_status);
|
_gss_mg_error(m, *minor_status);
|
||||||
|
|
||||||
cleanup:
|
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);
|
gss_delete_sec_context(&junk, (gss_ctx_id_t *)&ctx, GSS_C_NO_BUFFER);
|
||||||
|
|
||||||
*context_handle = (gss_ctx_id_t) ctx;
|
*context_handle = (gss_ctx_id_t) ctx;
|
||||||
|
@@ -106,7 +106,7 @@ gssspi_query_meta_data(
|
|||||||
_gss_mg_error(m, *minor_status);
|
_gss_mg_error(m, *minor_status);
|
||||||
|
|
||||||
cleanup:
|
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);
|
gss_delete_sec_context(&junk, (gss_ctx_id_t *)&ctx, GSS_C_NO_BUFFER);
|
||||||
|
|
||||||
*context_handle = (gss_ctx_id_t) ctx;
|
*context_handle = (gss_ctx_id_t) ctx;
|
||||||
|
Reference in New Issue
Block a user