Skip to content

Commit 632d064

Browse files
committed
Merge branch 'mysql-5.7-cluster-7.5' into mysql-5.7-cluster-7.6
Change-Id: I7f2274ed00eaa72a3a08262c0c6118073dc01ab2
2 parents 1440eef + 4a19cd4 commit 632d064

File tree

19 files changed

+169
-31
lines changed

19 files changed

+169
-31
lines changed

cmake/ssl.cmake

Lines changed: 72 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,62 @@ MACRO(RESET_SSL_VARIABLES)
9292
UNSET(HAVE_SHA512_DIGEST_LENGTH CACHE)
9393
ENDMACRO()
9494

95+
# Fetch OpenSSL version number.
96+
# OpenSSL < 3:
97+
# #define OPENSSL_VERSION_NUMBER 0x1000103fL
98+
# Encoded as MNNFFPPS: major minor fix patch status
99+
#
100+
# OpenSSL 3:
101+
# #define OPENSSL_VERSION_NUMBER
102+
# ( (OPENSSL_VERSION_MAJOR<<28)
103+
# |(OPENSSL_VERSION_MINOR<<20)
104+
# |(OPENSSL_VERSION_PATCH<<4)
105+
# |_OPENSSL_VERSION_PRE_RELEASE )
106+
MACRO(FIND_OPENSSL_VERSION)
107+
FOREACH(version_part
108+
OPENSSL_VERSION_MAJOR
109+
OPENSSL_VERSION_MINOR
110+
OPENSSL_VERSION_PATCH
111+
)
112+
FILE(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" ${version_part}
113+
REGEX "^#[\t ]*define[\t ]+${version_part}[\t ]+([0-9]+).*")
114+
STRING(REGEX REPLACE
115+
"^.*${version_part}[\t ]+([0-9]+).*" "\\1"
116+
${version_part} "${${version_part}}")
117+
ENDFOREACH()
118+
IF(OPENSSL_VERSION_MAJOR VERSION_EQUAL 3)
119+
# OpenSSL 3
120+
SET(OPENSSL_MAJOR_VERSION "${OPENSSL_VERSION_MAJOR}")
121+
SET(OPENSSL_MINOR_VERSION "${OPENSSL_VERSION_MINOR}")
122+
SET(OPENSSL_FIX_VERSION "${OPENSSL_VERSION_PATCH}")
123+
ELSE()
124+
# Verify version number. Version information looks like:
125+
# #define OPENSSL_VERSION_NUMBER 0x1000103fL
126+
# Encoded as MNNFFPPS: major minor fix patch status
127+
FILE(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h"
128+
OPENSSL_VERSION_NUMBER
129+
REGEX "^#[ ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*"
130+
)
131+
STRING(REGEX REPLACE
132+
"^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9]).*$" "\\1"
133+
OPENSSL_MAJOR_VERSION "${OPENSSL_VERSION_NUMBER}"
134+
)
135+
STRING(REGEX REPLACE
136+
"^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9]([0-9][0-9]).*$" "\\1"
137+
OPENSSL_MINOR_VERSION "${OPENSSL_VERSION_NUMBER}"
138+
)
139+
STRING(REGEX REPLACE
140+
"^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9][0-9][0-9]([0-9][0-9]).*$" "\\1"
141+
OPENSSL_FIX_VERSION "${OPENSSL_VERSION_NUMBER}"
142+
)
143+
ENDIF()
144+
SET(OPENSSL_VERSION
145+
"${OPENSSL_MAJOR_VERSION}.${OPENSSL_MINOR_VERSION}.${OPENSSL_FIX_VERSION}"
146+
)
147+
SET(OPENSSL_VERSION ${OPENSSL_VERSION} CACHE INTERNAL "")
148+
MESSAGE(STATUS "OPENSSL_VERSION (${WITH_SSL}) is ${OPENSSL_VERSION}")
149+
ENDMACRO(FIND_OPENSSL_VERSION)
150+
95151
# MYSQL_CHECK_SSL
96152
#
97153
# Provides the following configure options:
@@ -194,30 +250,8 @@ MACRO (MYSQL_CHECK_SSL)
194250
ENDIF()
195251

196252
IF(OPENSSL_INCLUDE_DIR)
197-
# Verify version number. Version information looks like:
198-
# #define OPENSSL_VERSION_NUMBER 0x1000103fL
199-
# Encoded as MNNFFPPS: major minor fix patch status
200-
FILE(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h"
201-
OPENSSL_VERSION_NUMBER
202-
REGEX "^#[ ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*"
203-
)
204-
STRING(REGEX REPLACE
205-
"^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9]).*$" "\\1"
206-
OPENSSL_MAJOR_VERSION "${OPENSSL_VERSION_NUMBER}"
207-
)
208-
STRING(REGEX REPLACE
209-
"^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9]([0-9][0-9]).*$" "\\1"
210-
OPENSSL_MINOR_VERSION "${OPENSSL_VERSION_NUMBER}"
211-
)
212-
STRING(REGEX REPLACE
213-
"^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9][0-9][0-9]([0-9][0-9]).*$" "\\1"
214-
OPENSSL_FIX_VERSION "${OPENSSL_VERSION_NUMBER}"
215-
)
253+
FIND_OPENSSL_VERSION()
216254
ENDIF()
217-
SET(OPENSSL_VERSION
218-
"${OPENSSL_MAJOR_VERSION}.${OPENSSL_MINOR_VERSION}.${OPENSSL_FIX_VERSION}"
219-
)
220-
SET(OPENSSL_VERSION ${OPENSSL_VERSION} CACHE INTERNAL "")
221255

222256
IF("${OPENSSL_VERSION}" VERSION_GREATER "1.1.0")
223257
ADD_DEFINITIONS(-DHAVE_TLSv13)
@@ -229,7 +263,8 @@ MACRO (MYSQL_CHECK_SSL)
229263
IF(OPENSSL_INCLUDE_DIR AND
230264
OPENSSL_LIBRARY AND
231265
CRYPTO_LIBRARY AND
232-
OPENSSL_MAJOR_VERSION STREQUAL "1"
266+
(OPENSSL_MAJOR_VERSION STREQUAL "1" OR
267+
OPENSSL_MAJOR_VERSION STREQUAL "3")
233268
)
234269
SET(OPENSSL_FOUND TRUE)
235270
ELSE()
@@ -312,3 +347,16 @@ MACRO (MYSQL_CHECK_SSL)
312347
"Wrong option or path for WITH_SSL=${WITH_SSL}.")
313348
ENDIF()
314349
ENDMACRO()
350+
351+
# Downgrade OpenSSL 3 deprecation warnings.
352+
MACRO(DOWNGRADE_OPENSSL3_DEPRECATION_WARNINGS)
353+
IF(OPENSSL_MAJOR_VERSION VERSION_EQUAL 3)
354+
IF(MY_COMPILER_IS_GNU_OR_CLANG)
355+
ADD_COMPILE_FLAGS(${ARGV}
356+
COMPILE_FLAGS "-Wno-error=deprecated-declarations")
357+
ELSEIF(WIN32)
358+
ADD_COMPILE_FLAGS(${ARGV}
359+
COMPILE_FLAGS "/wd4996")
360+
ENDIF()
361+
ENDIF()
362+
ENDMACRO()

libmysql/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,9 @@ SET(CLIENT_SOURCES
197197
../sql/auth/sha2_password_common.cc
198198
)
199199

200+
DOWNGRADE_OPENSSL3_DEPRECATION_WARNINGS(
201+
../sql-common/client_authentication.cc)
202+
200203
IF (WIN32 AND OPENSSL_APPLINK_C)
201204
SET_SOURCE_FILES_PROPERTIES(
202205
../sql-common/client_authentication.cc
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Allow ciphers by default treated as unsecure in OpenSSL 3.0 to allow use of
2+
# legacy TLSv1.0 and TLSv1.1.
3+
# Configuration file should also work for OpenSSL 1.1.1 but will not work with
4+
# for example OpenSSL 1.0.
5+
openssl_conf = openssl_sect
6+
[ openssl_sect ]
7+
ssl_conf = ssl_sect
8+
[ssl_sect]
9+
system_default = system_default_sect
10+
[system_default_sect]
11+
CipherString = DEFAULT:@SECLEVEL=0

mysql-test/mysql-test-run.pl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3007,6 +3007,18 @@ sub environment_setup {
30073007
my $pathsep= ":";
30083008
$pathsep= ";" if IS_WINDOWS && ! IS_CYGWIN;
30093009
$ENV{'PATH'}= "$ENV{'PATH'}".$pathsep.$perldir;
3010+
3011+
# ----------------------------------------------------
3012+
# openssl3 helper
3013+
# ----------------------------------------------------
3014+
# Provide path to openssl configuration file allowing old TLSv1.0 and TLSv1.1.
3015+
# In tests that need it add to test cnf-file:
3016+
#
3017+
# [ENV]
3018+
# OPENSSL_CONF=@env.OPENSSL3_LEGACY_TLS_CNF
3019+
#
3020+
$ENV{'OPENSSL3_LEGACY_TLS_CNF'}=
3021+
native_path(${glob_mysql_test_dir}."/include/openssl3_legacy_tls.cnf");
30103022
}
30113023

30123024

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
!include include/default_my.cnf
2+
[ENV]
3+
OPENSSL_CONF=@env.OPENSSL3_LEGACY_TLS_CNF
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
!include include/default_my.cnf
2+
[ENV]
3+
OPENSSL_CONF=@env.OPENSSL3_LEGACY_TLS_CNF
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
!include ../my.cnf
2+
[ENV]
3+
OPENSSL_CONF=@env.OPENSSL3_LEGACY_TLS_CNF
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
!include include/default_my.cnf
2+
[ENV]
3+
OPENSSL_CONF=@env.OPENSSL3_LEGACY_TLS_CNF

mysys_ssl/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ IF(SSL_DEFINES)
3131
ADD_DEFINITIONS(${SSL_DEFINES})
3232
ENDIF()
3333

34+
DOWNGRADE_OPENSSL3_DEPRECATION_WARNINGS(
35+
crypt_genhash_impl.cc
36+
my_md5.cc
37+
my_sha1.cc)
38+
3439
SET(MYSYS_AES_IMPLEMENTATION my_aes_openssl.cc)
3540

3641
SET(MYSYS_SSL_SOURCES

rapid/plugin/group_replication/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,8 @@ ADD_DEFINITIONS(${SSL_DEFINES})
165165
# add the definition to build XCom with SSL support
166166
ADD_DEFINITIONS(-DXCOM_HAVE_OPENSSL)
167167

168+
DOWNGRADE_OPENSSL3_DEPRECATION_WARNINGS(
169+
libmysqlgcs/src/bindings/xcom/xcom/xcom_ssl_transport.c)
168170

169171
IF(WITH_UNIT_TESTS)
170172
ADD_CONVENIENCE_LIBRARY(gr_unit_test_resource

0 commit comments

Comments
 (0)