summaryrefslogtreecommitdiff
path: root/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.19-fix-libressl-support.patch
blob: fc6eb777063e45a9037798521ec5ffb6d4b7baa0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
--- a/cdk/cmake/DepFindSSL.cmake
+++ b/cdk/cmake/DepFindSSL.cmake
@@ -88,7 +88,7 @@ function(main)
 
   set(OPENSSL_LIB_DIR "${OPENSSL_LIB_DIR}" CACHE INTERNAL "")
 
-  if(NOT OPENSSL_VERSION_MAJOR EQUAL 1)
+  if(NOT OPENSSL_VERSION_MAJOR VERSION_GREATER_EQUAL 1)
     message(SEND_ERROR "OpenSSL version 1.x is required but version ${OPENSSL_VERSION} was found")
   else()
     message(STATUS "Using OpenSSL version: ${OPENSSL_VERSION}")
@@ -182,42 +182,33 @@ function(find_openssl)
   set(OPENSSL_INCLUDE_DIR "${OPENSSL_INCLUDE_DIR}" PARENT_SCOPE)
   message("-- found OpenSSL headers at: ${OPENSSL_INCLUDE_DIR}")
 
-
   # Verify version number. Version information looks like:
-  #   #define OPENSSL_VERSION_TEXT    "OpenSSL 1.1.1a  20 Nov 2018"
-
+  #   #define OPENSSL_VERSION_NUMBER 0x1000103fL
+  # Encoded as MNNFFPPS: major minor fix patch status
   FILE(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h"
     OPENSSL_VERSION_NUMBER
-    REGEX "#[ ]*define[\t ]+OPENSSL_VERSION_TEXT"
+    REGEX "^#[ ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*"
   )
-
-  #message("== OPENSSL_VERSION_NUMBER: ${OPENSSL_VERSION_NUMBER}")
   STRING(REGEX REPLACE
-    "^.*OPENSSL_VERSION_TEXT[\t ]+\"OpenSSL[\t ]([0-9]+)\\.([0-9]+)\\.([0-9]+)([a-z]*)[\t ].*$"
-    "\\1;\\2;\\3;\\4"
-    version_list "${OPENSSL_VERSION_NUMBER}"
+    "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9]).*$" "\\1"
+    OPENSSL_VERSION_MAJOR "${OPENSSL_VERSION_NUMBER}"
+  )
+  STRING(REGEX REPLACE
+    "^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9]([0-9][0-9]).*$" "\\1"
+    OPENSSL_VERSION_MINOR "${OPENSSL_VERSION_NUMBER}"
+  )
+  STRING(REGEX REPLACE
+    "^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9][0-9][0-9]([0-9][0-9]).*$" "\\1"
+    OPENSSL_VERSION_FIX "${OPENSSL_VERSION_NUMBER}"
   )
-  #message("-- OPENSSL_VERSION: ${version_list}")
-
-  list(GET version_list 0 OPENSSL_VERSION_MAJOR)
-  math(EXPR OPENSSL_VERSION_MAJOR ${OPENSSL_VERSION_MAJOR})
-
-  list(GET version_list 1 OPENSSL_VERSION_MINOR)
-  math(EXPR OPENSSL_VERSION_MINOR ${OPENSSL_VERSION_MINOR})
-
-  list(GET version_list 2 OPENSSL_VERSION_FIX)
-  math(EXPR OPENSSL_VERSION_FIX ${OPENSSL_VERSION_FIX})
-
-  list(GET version_list 3 OPENSSL_VERSION_PATCH)
-
-
 
   set(OPENSSL_VERSION
-    "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}${OPENSSL_VERSION_PATCH}"
+    "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}"
     PARENT_SCOPE
   )
   set(OPENSSL_VERSION_MAJOR ${OPENSSL_VERSION_MAJOR} PARENT_SCOPE)
 
+  CHECK_SYMBOL_EXISTS(TLS1_3_VERSION "openssl/tls1.h" HAVE_TLS1_3_VERSION)
 
   find_library(OPENSSL_LIBRARY
     NAMES ssl ssleay32 ssleay32MD libssl
--- a/cdk/foundation/connection_openssl.cc
+++ b/cdk/foundation/connection_openssl.cc
@@ -211,7 +211,7 @@ static void throw_ssl_error(SSL* tls, int err)
   case SSL_ERROR_WANT_CONNECT:
   case SSL_ERROR_WANT_ACCEPT:
   case SSL_ERROR_WANT_X509_LOOKUP:
-# if OPENSSL_VERSION_NUMBER >= 0x10100000L
+# if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
   case SSL_ERROR_WANT_ASYNC:
   case SSL_ERROR_WANT_ASYNC_JOB:
 # endif
@@ -387,7 +387,7 @@ void TLS_helper::setup(SSL_CTX *ctx)
 
   SSL_CTX_set_cipher_list(ctx, m_cipher_list.c_str());
 
-#if OPENSSL_VERSION_NUMBER>=0x1010100fL
+#if HAVE_TLS1_3_VERSION
 
   /*
     Note: If TLSv1.3 is not enabled, there is no need to restrict