]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fix uncommon null dereference in PKINIT client
authorGreg Hudson <ghudson@mit.edu>
Fri, 3 Jul 2015 23:34:46 +0000 (19:34 -0400)
committerTom Yu <tlyu@mit.edu>
Wed, 9 Dec 2015 19:54:23 +0000 (14:54 -0500)
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: 8305 (new)
version_fixed: 1.12.5
status: resolved

src/plugins/preauth/pkinit/pkinit_clnt.c

index cfef5b9dc0fb49c1b292bcceb09df9241c640ead..3724cef9e320d3a534ee4c2b8209d81f9d349883 100644 (file)
@@ -515,7 +515,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;
 
@@ -547,8 +547,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);