(krb5_copy_ticket): free all data when failing, copy data to right

memory, the later pointed out by Luke Howard.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@12709 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2003-08-31 02:05:31 +00:00
parent d305925af4
commit af371af07a

View File

@@ -51,7 +51,10 @@ krb5_copy_ticket(krb5_context context,
krb5_ticket **to) krb5_ticket **to)
{ {
krb5_error_code ret; krb5_error_code ret;
krb5_ticket *tmp = malloc(sizeof(*tmp)); krb5_ticket *tmp;
*to = NULL;
tmp = malloc(sizef(*tmp));
if(tmp == NULL) { if(tmp == NULL) {
krb5_set_error_string (context, "malloc: out of memory"); krb5_set_error_string (context, "malloc: out of memory");
return ENOMEM; return ENOMEM;
@@ -63,12 +66,14 @@ krb5_copy_ticket(krb5_context context,
ret = krb5_copy_principal(context, from->client, &tmp->client); ret = krb5_copy_principal(context, from->client, &tmp->client);
if(ret){ if(ret){
free_EncTicketPart(&tmp->ticket); free_EncTicketPart(&tmp->ticket);
free(tmp);
return ret; return ret;
} }
ret = krb5_copy_principal(context, from->server, &(*to)->server); ret = krb5_copy_principal(context, from->server, &tmp->server);
if(ret){ if(ret){
krb5_free_principal(context, tmp->client); krb5_free_principal(context, tmp->client);
free_EncTicketPart(&tmp->ticket); free_EncTicketPart(&tmp->ticket);
free(tmp);
return ret; return ret;
} }
*to = tmp; *to = tmp;