]> git.sur5r.net Git - openldap/commitdiff
ITS#7430 GnuTLS: Avoid use of deprecated function
authorHoward Chu <hyc@openldap.org>
Sat, 7 Sep 2013 16:39:24 +0000 (09:39 -0700)
committerHoward Chu <hyc@openldap.org>
Sat, 7 Sep 2013 16:41:46 +0000 (09:41 -0700)
libraries/libldap/tls_g.c

index 9acffaf7351a69c2be77f5d435beb1e8db7db18d..c793828e73557bdb79b1b429a9ff7547395b2508 100644 (file)
@@ -368,6 +368,17 @@ tlsg_ctx_init( struct ldapoptions *lo, struct ldaptls *lt, int is_server )
                 * then we have to build the cert chain.
                 */
                if ( max == 1 && !gnutls_x509_crt_check_issuer( certs[0], certs[0] )) {
+#if GNUTLS_VERSION_NUMBER >= 0x020c00
+                       unsigned int i;
+                       for ( i = 1; i<VERIFY_DEPTH; i++ ) {
+                               if ( gnutls_certificate_get_issuer( ctx->cred, certs[i-1], &certs[i], 0 ))
+                                       break;
+                               max++;
+                               /* If this CA is self-signed, we're done */
+                               if ( gnutls_x509_crt_check_issuer( certs[i], certs[i] ))
+                                       break;
+                       }
+#else
                        gnutls_x509_crt_t *cas;
                        unsigned int i, j, ncas;
 
@@ -387,6 +398,7 @@ tlsg_ctx_init( struct ldapoptions *lo, struct ldaptls *lt, int is_server )
                                if ( j == ncas )
                                        break;
                        }
+#endif
                }
                rc = gnutls_certificate_set_x509_key( ctx->cred, certs, max, key );
                if ( rc ) return -1;