(krb5_free_context): free more stuff

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10609 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
2001-08-31 08:00:15 +00:00
parent 87a2fca5d4
commit 1702411f48

View File

@@ -214,18 +214,23 @@ krb5_init_context(krb5_context *context)
void void
krb5_free_context(krb5_context context) krb5_free_context(krb5_context context)
{ {
int i; int i;
free(context->etypes); free(context->etypes);
free(context->etypes_des); free(context->etypes_des);
krb5_free_host_realm (context, context->default_realms); krb5_free_host_realm (context, context->default_realms);
krb5_config_file_free (context, context->cf); krb5_config_file_free (context, context->cf);
free_error_table (context->et_list); free_error_table (context->et_list);
for(i = 0; i < context->num_cc_ops; ++i) for(i = 0; i < context->num_cc_ops; ++i)
free(context->cc_ops[i].prefix); free(context->cc_ops[i].prefix);
free(context->cc_ops); free(context->cc_ops);
free(context->kt_types); free(context->kt_types);
free(context); krb5_clear_error_string(context);
if(context->warn_dest != NULL)
krb5_closelog(context, context->warn_dest);
krb5_set_extra_addresses(context, NULL);
krb5_set_ignore_addresses(context, NULL);
free(context);
} }
/* /*
@@ -355,9 +360,15 @@ krb5_add_extra_addresses(krb5_context context, krb5_addresses *addresses)
krb5_error_code krb5_error_code
krb5_set_extra_addresses(krb5_context context, const krb5_addresses *addresses) krb5_set_extra_addresses(krb5_context context, const krb5_addresses *addresses)
{ {
if(context->extra_addresses) { if(context->extra_addresses)
krb5_free_addresses(context, context->extra_addresses); krb5_free_addresses(context, context->extra_addresses);
free(context->extra_addresses);
if(addresses == NULL) {
if(context->extra_addresses != NULL) {
free(context->extra_addresses);
context->extra_addresses = NULL;
}
return 0;
} }
if(context->extra_addresses == NULL) { if(context->extra_addresses == NULL) {
context->extra_addresses = malloc(sizeof(*context->extra_addresses)); context->extra_addresses = malloc(sizeof(*context->extra_addresses));
@@ -393,9 +404,14 @@ krb5_add_ignore_addresses(krb5_context context, krb5_addresses *addresses)
krb5_error_code krb5_error_code
krb5_set_ignore_addresses(krb5_context context, const krb5_addresses *addresses) krb5_set_ignore_addresses(krb5_context context, const krb5_addresses *addresses)
{ {
if(context->ignore_addresses) { if(context->ignore_addresses)
krb5_free_addresses(context, context->ignore_addresses); krb5_free_addresses(context, context->ignore_addresses);
free(context->ignore_addresses); if(addresses == NULL) {
if(context->ignore_addresses != NULL) {
free(context->ignore_addresses);
context->ignore_addresses = NULL;
}
return 0;
} }
if(context->ignore_addresses == NULL) { if(context->ignore_addresses == NULL) {
context->ignore_addresses = malloc(sizeof(*context->ignore_addresses)); context->ignore_addresses = malloc(sizeof(*context->ignore_addresses));