fix up memory deallocation

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3110 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1997-08-24 07:32:00 +00:00
parent 9c0e050894
commit 19f08466bc

View File

@@ -263,6 +263,8 @@ create_reply_ticket (struct rx_header *hdr,
krb5_data enc_data; krb5_data enc_data;
des_key_schedule schedule; des_key_schedule schedule;
struct rx_header reply_hdr; struct rx_header reply_hdr;
des_cblock zero;
size_t pad;
/* create the ticket */ /* create the ticket */
ekey = unseal_key(skey); ekey = unseal_key(skey);
@@ -296,8 +298,12 @@ create_reply_ticket (struct rx_header *hdr,
krb5_store_stringz (sp, sinstance); krb5_store_stringz (sp, sinstance);
sp->store (sp, ticket.dat, ticket.length); sp->store (sp, ticket.dat, ticket.length);
sp->store (sp, label, strlen(label)); sp->store (sp, label, strlen(label));
krb5_store_int32 (sp, 0); /* XXX */
krb5_store_int32 (sp, 0); /* XXX */ /* pad to DES block */
memset (zero, 0, sizeof(zero));
pad = (8 - sp->seek (sp, 0, SEEK_CUR) % 8) % 8;
sp->store (sp, zero, pad);
krb5_storage_to_data (sp, &enc_data); krb5_storage_to_data (sp, &enc_data);
krb5_storage_free (sp); krb5_storage_free (sp);
@@ -341,6 +347,7 @@ unparse_auth_args (krb5_storage *sp,
return ENOMEM; return ENOMEM;
memcpy (*name, data.data, data.length); memcpy (*name, data.data, data.length);
(*name)[data.length] = '\0'; (*name)[data.length] = '\0';
krb5_data_free (&data);
krb5_ret_xdr_data (sp, &data); krb5_ret_xdr_data (sp, &data);
*instance = malloc(data.length + 1); *instance = malloc(data.length + 1);
@@ -348,6 +355,7 @@ unparse_auth_args (krb5_storage *sp,
return ENOMEM; return ENOMEM;
memcpy (*instance, data.data, data.length); memcpy (*instance, data.data, data.length);
(*instance)[data.length] = '\0'; (*instance)[data.length] = '\0';
krb5_data_free (&data);
krb5_ret_int32 (sp, &tmp); krb5_ret_int32 (sp, &tmp);
*start_time = tmp; *start_time = tmp;
@@ -417,7 +425,7 @@ do_authenticate (struct rx_header *hdr,
if(ret){ if(ret){
kdc_log(0, "%s", krb5_get_err_text(context, ret)); kdc_log(0, "%s", krb5_get_err_text(context, ret));
make_error_reply (hdr, KANOKEYS, reply); make_error_reply (hdr, KANOKEYS, reply);
return; goto out;
} }
/* try to decode the `request' */ /* try to decode the `request' */
@@ -473,14 +481,14 @@ out:
free (name); free (name);
if (instance) if (instance)
free (instance); free (instance);
if (ckey) if (client_entry) {
hdb_free_key (ckey);
if (skey)
hdb_free_key (ckey);
if (client_entry)
hdb_free_entry (context, client_entry); hdb_free_entry (context, client_entry);
if (server_entry) free (client_entry);
}
if (server_entry) {
hdb_free_entry (context, server_entry); hdb_free_entry (context, server_entry);
free (server_entry);
}
} }
static krb5_error_code static krb5_error_code
@@ -505,6 +513,7 @@ unparse_getticket_args (krb5_storage *sp,
return ENOMEM; return ENOMEM;
memcpy (*auth_domain, data.data, data.length); memcpy (*auth_domain, data.data, data.length);
(*auth_domain)[data.length] = '\0'; (*auth_domain)[data.length] = '\0';
krb5_data_free (&data);
krb5_ret_xdr_data (sp, ticket); krb5_ret_xdr_data (sp, ticket);
@@ -514,6 +523,7 @@ unparse_getticket_args (krb5_storage *sp,
return ENOMEM; return ENOMEM;
memcpy (*name, data.data, data.length); memcpy (*name, data.data, data.length);
(*name)[data.length] = '\0'; (*name)[data.length] = '\0';
krb5_data_free (&data);
krb5_ret_xdr_data (sp, &data); krb5_ret_xdr_data (sp, &data);
*instance = malloc(data.length + 1); *instance = malloc(data.length + 1);
@@ -521,6 +531,7 @@ unparse_getticket_args (krb5_storage *sp,
return ENOMEM; return ENOMEM;
memcpy (*instance, data.data, data.length); memcpy (*instance, data.data, data.length);
(*instance)[data.length] = '\0'; (*instance)[data.length] = '\0';
krb5_data_free (&data);
krb5_ret_xdr_data (sp, times); krb5_ret_xdr_data (sp, times);
@@ -592,7 +603,7 @@ do_getticket (struct rx_header *hdr,
if(ret){ if(ret){
kdc_log(0, "%s", krb5_get_err_text(context, ret)); kdc_log(0, "%s", krb5_get_err_text(context, ret));
make_error_reply (hdr, KANOKEYS, reply); make_error_reply (hdr, KANOKEYS, reply);
return; goto out;
} }
/* decrypt the incoming ticket */ /* decrypt the incoming ticket */
@@ -677,14 +688,14 @@ out:
free (name); free (name);
if (instance) if (instance)
free (instance); free (instance);
if (krbtgt_entry) if (krbtgt_entry) {
hdb_free_entry (context, krbtgt_entry); hdb_free_entry (context, krbtgt_entry);
if (server_entry) free (krbtgt_entry);
}
if (server_entry) {
hdb_free_entry (context, server_entry); hdb_free_entry (context, server_entry);
if (kkey) free (server_entry);
hdb_free_key (kkey); }
if (skey)
hdb_free_key (skey);
} }
krb5_error_code krb5_error_code