]> granicus.if.org Git - apache/commitdiff
Better safe than sorry: with OpenSSL 1.0, X509_STORE_CTX_get_current_cert()
authorKaspar Brand <kbrand@apache.org>
Sun, 28 Aug 2011 16:50:12 +0000 (16:50 +0000)
committerKaspar Brand <kbrand@apache.org>
Sun, 28 Aug 2011 16:50:12 +0000 (16:50 +0000)
may not always return a cert.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1162553 13f79535-47bb-0310-9956-ffa450edef68

modules/ssl/ssl_engine_ocsp.c

index ff5ee35c3a9e2c29db871a972578fb19e605188d..df77cceb5ec528ee1dcffa1de604c901309c196d 100644 (file)
@@ -252,8 +252,15 @@ int modssl_verify_ocsp(X509_STORE_CTX *ctx, SSLSrvConfigRec *sc,
     apr_pool_t *vpool;
     int rv;
 
-    /* don't do OCSP checking for valid self-issued certs */
-    if (cert->valid && X509_check_issued(cert,cert) == X509_V_OK) {
+    if (!cert) {
+        /* starting with OpenSSL 1.0, X509_STORE_CTX_get_current_cert()
+         * may yield NULL. Return early, but leave the ctx error as is. */
+        ap_log_cerror(APLOG_MARK, APLOG_TRACE2, 0, c,
+                      "No cert available to check with OCSP");
+        return 1;
+    }
+    else if (cert->valid && X509_check_issued(cert,cert) == X509_V_OK) {
+        /* don't do OCSP checking for valid self-issued certs */
         ap_log_cerror(APLOG_MARK, APLOG_TRACE2, 0, c,
                       "Skipping OCSP check for valid self-issued cert");
         X509_STORE_CTX_set_error(ctx, X509_V_OK);