(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:
Love Hörnquist Åstrand
2004-11-30 07:02:01 +00:00
parent ce43a2bcc3
commit 899e9ce83d

View File

@@ -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);