gss: Fix double-free in acquire_from

This commit is contained in:
Nicolas Williams
2019-10-30 21:00:30 -05:00
parent ba65039586
commit f717c7344b

View File

@@ -594,7 +594,6 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_acquire_cred_from
handle = calloc(1, sizeof(*handle)); handle = calloc(1, sizeof(*handle));
if (handle == NULL) { if (handle == NULL) {
*minor_status = ENOMEM; *minor_status = ENOMEM;
krb5_free_context(context);
return GSS_S_FAILURE; return GSS_S_FAILURE;
} }
@@ -606,7 +605,6 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_acquire_cred_from
if (ret) { if (ret) {
HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex); HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex);
free(handle); free(handle);
krb5_free_context(context);
return ret; return ret;
} }
} }
@@ -617,7 +615,6 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_acquire_cred_from
if (ret != GSS_S_COMPLETE) { if (ret != GSS_S_COMPLETE) {
HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex); HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex);
krb5_free_principal(context, handle->principal); krb5_free_principal(context, handle->principal);
krb5_free_context(context);
free(handle); free(handle);
return (ret); return (ret);
} }
@@ -633,7 +630,6 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_acquire_cred_from
if (ret != GSS_S_COMPLETE) { if (ret != GSS_S_COMPLETE) {
HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex); HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex);
krb5_free_principal(context, handle->principal); krb5_free_principal(context, handle->principal);
krb5_free_context(context);
free(handle); free(handle);
return (ret); return (ret);
} }
@@ -645,7 +641,6 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_acquire_cred_from
if (ret != GSS_S_COMPLETE) { if (ret != GSS_S_COMPLETE) {
HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex); HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex);
krb5_free_principal(context, handle->principal); krb5_free_principal(context, handle->principal);
krb5_free_context(context);
free(handle); free(handle);
return (ret); return (ret);
} }
@@ -664,7 +659,6 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_acquire_cred_from
gss_release_oid_set(NULL, &handle->mechanisms); gss_release_oid_set(NULL, &handle->mechanisms);
HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex); HEIMDAL_MUTEX_destroy(&handle->cred_id_mutex);
krb5_free_principal(context, handle->principal); krb5_free_principal(context, handle->principal);
krb5_free_context(context);
free(handle); free(handle);
return (ret); return (ret);
} }