]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Work around openssl declaring x509_get_not{Before,After} as functions
authorNick Mathewson <nickm@torproject.org>
Tue, 6 Oct 2015 13:04:37 +0000 (09:04 -0400)
committerNick Mathewson <nickm@torproject.org>
Tue, 6 Oct 2015 13:04:37 +0000 (09:04 -0400)
Now that x509_get_not{Before,After} are functions in OpenSSL 1.1
(not yet releasesd), we need to define a variant that takes a const
pointer to X509 and returns a const pointer to ASN1_time.

Part of 17237. I'm not convinced this is an openssl bug or a tor
bug. It might be just one of those things.

changes/bug17237_027 [new file with mode: 0644]
src/common/tortls.c

diff --git a/changes/bug17237_027 b/changes/bug17237_027
new file mode 100644 (file)
index 0000000..8448bb0
--- /dev/null
@@ -0,0 +1,4 @@
+  o Minor features (compilation):
+    - Repair compilation with the most recent (unreleased, alpha)
+      vesions of OpenSSL 1.1. Fixes the 0.2.7-related part of
+      ticket 17237.
index 20c898456a1ecca5cee9b1cf76a9eea107ed8cf7..97d0ce2d4cab98608e32783e75bda1b4dbdd970f 100644 (file)
 #include "container.h"
 #include <string.h>
 
+#define X509_get_notBefore_const(cert) \
+  ((const ASN1_TIME*) X509_get_notBefore((X509 *)cert))
+#define X509_get_notAfter_const(cert) \
+  ((const ASN1_TIME*) X509_get_notAfter((X509 *)cert))
+
 /* Enable the "v2" TLS handshake.
  */
 #define V2_HANDSHAKE_SERVER
@@ -2203,7 +2208,7 @@ log_cert_lifetime(int severity, const X509 *cert, const char *problem)
   if (!(bio = BIO_new(BIO_s_mem()))) {
     log_warn(LD_GENERAL, "Couldn't allocate BIO!"); goto end;
   }
-  if (!(ASN1_TIME_print(bio, X509_get_notBefore(cert)))) {
+  if (!(ASN1_TIME_print(bio, X509_get_notBefore_const(cert)))) {
     tls_log_errors(NULL, LOG_WARN, LD_NET, "printing certificate lifetime");
     goto end;
   }
@@ -2211,7 +2216,7 @@ log_cert_lifetime(int severity, const X509 *cert, const char *problem)
   s1 = tor_strndup(buf->data, buf->length);
 
   (void)BIO_reset(bio);
-  if (!(ASN1_TIME_print(bio, X509_get_notAfter(cert)))) {
+  if (!(ASN1_TIME_print(bio, X509_get_notAfter_const(cert)))) {
     tls_log_errors(NULL, LOG_WARN, LD_NET, "printing certificate lifetime");
     goto end;
   }
@@ -2374,12 +2379,12 @@ check_cert_lifetime_internal(int severity, const X509 *cert,
   now = time(NULL);
 
   t = now + future_tolerance;
-  if (X509_cmp_time(X509_get_notBefore(cert), &t) > 0) {
+  if (X509_cmp_time(X509_get_notBefore_const(cert), &t) > 0) {
     log_cert_lifetime(severity, cert, "not yet valid");
     return -1;
   }
   t = now - past_tolerance;
-  if (X509_cmp_time(X509_get_notAfter(cert), &t) < 0) {
+  if (X509_cmp_time(X509_get_notAfter_const(cert), &t) < 0) {
     log_cert_lifetime(severity, cert, "already expired");
     return -1;
   }