summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorcem <cem@FreeBSD.org>2016-05-11 23:25:59 +0000
committercem <cem@FreeBSD.org>2016-05-11 23:25:59 +0000
commit2bcae162c5c82322e1d0a8c205a96505ca3367b1 (patch)
tree8b7981a88f131877ee1ba34c4d4047f36225b0e6 /crypto
parent493fc2338c03047098b508c651567e0f6d060bc6 (diff)
downloadFreeBSD-src-2bcae162c5c82322e1d0a8c205a96505ca3367b1.zip
FreeBSD-src-2bcae162c5c82322e1d0a8c205a96505ca3367b1.tar.gz
libkrb5: Fix potential double-free
If krb5_make_principal fails, tmp_creds.server may remain a pointer to freed memory and then be double-freed. After freeing it the first time, initialize it to NULL, which causes subsequent krb5_free_principal calls to do the right thing. Reported by: Coverity CID: 1273430 Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'crypto')
-rw-r--r--crypto/heimdal/lib/krb5/get_cred.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/crypto/heimdal/lib/krb5/get_cred.c b/crypto/heimdal/lib/krb5/get_cred.c
index e3bb23a..9914fe4 100644
--- a/crypto/heimdal/lib/krb5/get_cred.c
+++ b/crypto/heimdal/lib/krb5/get_cred.c
@@ -831,6 +831,7 @@ get_cred_kdc_capath_worker(krb5_context context,
if(strcmp(tgt_inst, server_realm) == 0)
break;
krb5_free_principal(context, tmp_creds.server);
+ tmp_creds.server = NULL;
ret = krb5_make_principal(context, &tmp_creds.server,
tgt_inst, KRB5_TGS_NAME, server_realm, NULL);
if(ret) {
OpenPOWER on IntegriCloud