(krb5_free_context): clear error string before destroying mutex
(krb5_init_context): don't call krb5_free_context before there is a mutex initialized git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14358 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -191,14 +191,16 @@ krb5_init_context(krb5_context *context)
|
|||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
char **files;
|
char **files;
|
||||||
|
|
||||||
|
*context = NULL;
|
||||||
|
|
||||||
p = calloc(1, sizeof(*p));
|
p = calloc(1, sizeof(*p));
|
||||||
if(!p)
|
if(!p)
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
|
|
||||||
p->mutex = malloc(sizeof(HEIMDAL_MUTEX));
|
p->mutex = malloc(sizeof(HEIMDAL_MUTEX));
|
||||||
if (p->mutex == NULL) {
|
if (p->mutex == NULL) {
|
||||||
ret = ENOMEM;
|
free(p);
|
||||||
goto out;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
HEIMDAL_MUTEX_init(p->mutex);
|
HEIMDAL_MUTEX_init(p->mutex);
|
||||||
|
|
||||||
@@ -241,10 +243,9 @@ out:
|
|||||||
void KRB5_LIB_FUNCTION
|
void KRB5_LIB_FUNCTION
|
||||||
krb5_free_context(krb5_context context)
|
krb5_free_context(krb5_context context)
|
||||||
{
|
{
|
||||||
if (context->mutex) {
|
krb5_clear_error_string(context);
|
||||||
HEIMDAL_MUTEX_destroy(context->mutex);
|
HEIMDAL_MUTEX_destroy(context->mutex);
|
||||||
free(context->mutex);
|
free(context->mutex);
|
||||||
}
|
|
||||||
if (context->default_cc_name)
|
if (context->default_cc_name)
|
||||||
free(context->default_cc_name);
|
free(context->default_cc_name);
|
||||||
free(context->etypes);
|
free(context->etypes);
|
||||||
@@ -254,7 +255,6 @@ krb5_free_context(krb5_context context)
|
|||||||
free_error_table (context->et_list);
|
free_error_table (context->et_list);
|
||||||
free(context->cc_ops);
|
free(context->cc_ops);
|
||||||
free(context->kt_types);
|
free(context->kt_types);
|
||||||
krb5_clear_error_string(context);
|
|
||||||
if(context->warn_dest != NULL)
|
if(context->warn_dest != NULL)
|
||||||
krb5_closelog(context, context->warn_dest);
|
krb5_closelog(context, context->warn_dest);
|
||||||
krb5_set_extra_addresses(context, NULL);
|
krb5_set_extra_addresses(context, NULL);
|
||||||
|
Reference in New Issue
Block a user