summaryrefslogtreecommitdiffstats
path: root/src/lib/krb5/krb/copy_creds.c
diff options
context:
space:
mode:
authorEzra Peisach <epeisach@mit.edu>2008-08-16 13:01:40 +0000
committerEzra Peisach <epeisach@mit.edu>2008-08-16 13:01:40 +0000
commit98428ac61a8273ada2ccd6b3f997b300eb31c246 (patch)
treeb035866399c3ea179c2cefec5afeb30edfb90be7 /src/lib/krb5/krb/copy_creds.c
parent809149e75030552759243f2a55471af34622418e (diff)
downloadkrb5-98428ac61a8273ada2ccd6b3f997b300eb31c246.tar.gz
krb5-98428ac61a8273ada2ccd6b3f997b300eb31c246.tar.xz
krb5-98428ac61a8273ada2ccd6b3f997b300eb31c246.zip
In copying a credential - if we run out memory - the cleanup code failed to clear the second_ticket
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20666 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/krb5/krb/copy_creds.c')
-rw-r--r--src/lib/krb5/krb/copy_creds.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/lib/krb5/krb/copy_creds.c b/src/lib/krb5/krb/copy_creds.c
index 417a9a449a..f011a03cec 100644
--- a/src/lib/krb5/krb/copy_creds.c
+++ b/src/lib/krb5/krb/copy_creds.c
@@ -84,20 +84,22 @@ krb5int_copy_creds_contents(krb5_context context, const krb5_creds *incred,
krb5_xfree(scratch);
retval = krb5_copy_data(context, &incred->second_ticket, &scratch);
if (retval)
- goto cleanticket;
+ goto clearticket;
tempcred->second_ticket = *scratch;
krb5_xfree(scratch);
retval = krb5_copy_authdata(context, incred->authdata,&tempcred->authdata);
if (retval)
- goto clearticket;
+ goto clearsecondticket;
return 0;
+ clearsecondticket:
+ memset(tempcred->second_ticket.data,0,tempcred->second_ticket.length);
+ free(tempcred->second_ticket.data);
clearticket:
memset(tempcred->ticket.data,0,tempcred->ticket.length);
- cleanticket:
free(tempcred->ticket.data);
cleanaddrs:
krb5_free_addresses(context, tempcred->addresses);