aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2015-07-03 19:34:46 -0400
committerTom Yu <tlyu@mit.edu>2015-08-18 16:57:02 -0400
commitfd58e67b5778642dc882c3f5a256f0cbff669a0e (patch)
tree109166876ecfc17c5950a511541bf6fcb64df403 /src
parent8af61fbe4c66d6cffa392519ab2c78a18e4d7299 (diff)
downloadkrb5-fd58e67b5778642dc882c3f5a256f0cbff669a0e.zip
krb5-fd58e67b5778642dc882c3f5a256f0cbff669a0e.tar.gz
krb5-fd58e67b5778642dc882c3f5a256f0cbff669a0e.tar.bz2
Fix uncommon null dereference in PKINIT client
crypto_retrieve_cert_sans() is allowed to set its princs output to NULL, although the OpenSSL implementation rarely does. Fix the TRACE_PKINIT_CLIENT_SAN_KDCCERT_PRINC for loop to allow this like other parts of the function do, and also get rid of the unnecessary princptr variable by using an integer index like other parts of the function. Based on a patch from Daniel Deptula. (cherry picked from commit 47b37b9e13ca1456ba6710f31bc41012d050dd07) ticket: 8214 version_fixed: 1.13.3 status: resolved
Diffstat (limited to 'src')
-rw-r--r--src/plugins/preauth/pkinit/pkinit_clnt.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/plugins/preauth/pkinit/pkinit_clnt.c b/src/plugins/preauth/pkinit/pkinit_clnt.c
index 5ad735a..3139d4b 100644
--- a/src/plugins/preauth/pkinit/pkinit_clnt.c
+++ b/src/plugins/preauth/pkinit/pkinit_clnt.c
@@ -464,7 +464,7 @@ verify_kdc_san(krb5_context context,
{
krb5_error_code retval;
char **certhosts = NULL, **cfghosts = NULL, **hostptr;
- krb5_principal *princs = NULL, *princptr;
+ krb5_principal *princs = NULL;
unsigned char ***get_dns;
int i, j;
@@ -496,8 +496,8 @@ verify_kdc_san(krb5_context context,
retval = KRB5KDC_ERR_KDC_NAME_MISMATCH;
goto out;
}
- for (princptr = princs; *princptr != NULL; princptr++)
- TRACE_PKINIT_CLIENT_SAN_KDCCERT_PRINC(context, *princptr);
+ for (i = 0; princs != NULL && princs[i] != NULL; i++)
+ TRACE_PKINIT_CLIENT_SAN_KDCCERT_PRINC(context, princs[i]);
if (certhosts != NULL) {
for (hostptr = certhosts; *hostptr != NULL; hostptr++)
TRACE_PKINIT_CLIENT_SAN_KDCCERT_DNSNAME(context, *hostptr);