From f5b4bd13a6e022609d14d1622182dade4df0ade9 Mon Sep 17 00:00:00 2001 From: Jochen Neumeister Date: Thu, 2 Jan 2020 20:00:50 +0000 Subject: databases/mysql56-{client, server}: Update to latest release 5.6.46 Bugfix: - Improper locking during storage engine initialization could cause a server exit. - A query with a WHERE clause whose predicate contained a numeric value in scientific notation was not handled correctly. - VS2019 produced compilation errors with debug compilation selected due to use of the /ZI flag. Now /Z7 is used instead. - For MySQL Community Edition, the cipher order specified by the client was used in preference to the order on the server side, unless the server was confi - Password masking was incomplete for SHOW PROCESSLIST and some INFORMATION_SCHEMA and Performance Schema tables. - The -DWITH_EXAMPLE_STORAGE_ENGINE=1 CMake option was ignored but should not have been. If -DWITH_EXAMPLE_STORAGE_ENGINE=0 is given, the EXAMPLE storage e More Info: https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-46.html Approved by: mmokhi (maintainer, implicit) MFH: 2020Q1 Security: fc91f2ef-fd7b-11e9-a1c7-b499baebfeaf Sponsored by: Netzkommune GmbH --- databases/mysql56-server/Makefile | 2 +- databases/mysql56-server/distinfo | 6 +- .../mysql56-server/files/patch-CMakeLists.txt | 19 +- databases/mysql56-server/files/patch-PR225888.diff | 302 --------------------- .../files/patch-libmysql_CMakeLists.txt | 23 +- 5 files changed, 26 insertions(+), 326 deletions(-) delete mode 100644 databases/mysql56-server/files/patch-PR225888.diff (limited to 'databases/mysql56-server') diff --git a/databases/mysql56-server/Makefile b/databases/mysql56-server/Makefile index 47ea9b18c250..a194e214174c 100644 --- a/databases/mysql56-server/Makefile +++ b/databases/mysql56-server/Makefile @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME?= mysql -PORTVERSION= 5.6.45 +PORTVERSION= 5.6.46 PORTREVISION?= 0 CATEGORIES= databases MASTER_SITES= MYSQL/MySQL-5.6 diff --git a/databases/mysql56-server/distinfo b/databases/mysql56-server/distinfo index 3ea3dc09430e..3192ddb6e3d3 100644 --- a/databases/mysql56-server/distinfo +++ b/databases/mysql56-server/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1565035854 -SHA256 (mysql-5.6.45.tar.gz) = 404d798974dd89aca4a19e67194b534eddc7508489982175978966360607aabb -SIZE (mysql-5.6.45.tar.gz) = 32525559 +TIMESTAMP = 1577785560 +SHA256 (mysql-5.6.46.tar.gz) = 12e1fbabf2086e6175359767ca89fa8a58f9274fcad40434aa6a56e582d65f49 +SIZE (mysql-5.6.46.tar.gz) = 32395002 diff --git a/databases/mysql56-server/files/patch-CMakeLists.txt b/databases/mysql56-server/files/patch-CMakeLists.txt index 6fcde7d4b214..23cca022fbb1 100644 --- a/databases/mysql56-server/files/patch-CMakeLists.txt +++ b/databases/mysql56-server/files/patch-CMakeLists.txt @@ -1,6 +1,6 @@ ---- CMakeLists.txt.orig 2014-07-18 15:48:39.000000000 +0000 -+++ CMakeLists.txt 2014-08-04 14:18:38.795491147 +0000 -@@ -500,12 +500,10 @@ +--- CMakeLists.txt.orig 2020-01-01 20:46:13.771078000 +0100 ++++ CMakeLists.txt 2020-01-01 20:49:28.631677000 +0100 +@@ -558,12 +558,10 @@ IF(UNIX) ENDIF() IF(NOT WITHOUT_SERVER) @@ -13,7 +13,7 @@ ENDIF(WITH_EMBEDDED_SERVER) ENDIF() -@@ -514,10 +512,7 @@ +@@ -572,10 +570,7 @@ ENDIF() ADD_SUBDIRECTORY(scripts) IF(NOT WITHOUT_SERVER) @@ -24,18 +24,19 @@ IF(EXISTS ${CMAKE_SOURCE_DIR}/internal/CMakeLists.txt) ADD_SUBDIRECTORY(internal) ENDIF() -@@ -572,6 +567,7 @@ +@@ -634,6 +629,7 @@ ENDIF() # # RPM installs documentation directly from the source tree # +IF(FALSE) IF(NOT INSTALL_LAYOUT MATCHES "RPM") - INSTALL(FILES COPYING LICENSE.mysql - DESTINATION ${INSTALL_DOCREADMEDIR} -@@ -597,5 +593,6 @@ + INSTALL(FILES + README +@@ -652,6 +648,7 @@ IF(NOT INSTALL_LAYOUT MATCHES "RPM") + PATTERN "mysql.info" EXCLUDE PATTERN "sp-imp-spec.txt" EXCLUDE ) - ENDIF() +ENDIF() + ENDIF() INCLUDE(CPack) diff --git a/databases/mysql56-server/files/patch-PR225888.diff b/databases/mysql56-server/files/patch-PR225888.diff deleted file mode 100644 index 0a5670c1ff10..000000000000 --- a/databases/mysql56-server/files/patch-PR225888.diff +++ /dev/null @@ -1,302 +0,0 @@ -diff --git extra/yassl/include/openssl/ssl.h extra/yassl/include/openssl/ssl.h -index 10fa4913b7e..ff6cb696661 100644 ---- extra/yassl/include/openssl/ssl.h.orig -+++ extra/yassl/include/openssl/ssl.h -@@ -1,5 +1,5 @@ - /* -- Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved. -+ Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by -@@ -179,7 +179,7 @@ enum { /* X509 Constants */ - unsigned long ERR_get_error_line_data(const char**, int*, const char**, int *); - void ERR_print_errors_fp(FILE*); - char* ERR_error_string(unsigned long,char*); --void ERR_remove_state(unsigned long); -+void ERR_remove_thread_state(const void *); - unsigned long ERR_get_error(void); - unsigned long ERR_peek_error(void); - int ERR_GET_REASON(int); -diff --git extra/yassl/src/ssl.cpp extra/yassl/src/ssl.cpp -index 39244a01b92..c992d446487 100644 ---- extra/yassl/src/ssl.cpp.orig -+++ extra/yassl/src/ssl.cpp -@@ -1,5 +1,5 @@ - /* -- Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. -+ Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by -@@ -1615,7 +1615,7 @@ int SSLeay_add_ssl_algorithms() // compatibility only - } - - --void ERR_remove_state(unsigned long) -+void ERR_remove_thread_state(const void *) - { - GetErrors().Remove(); - } -diff --git mysys_ssl/my_aes_openssl.cc mysys_ssl/my_aes_openssl.cc -index 261ba8ab732..a0f8c147c7a 100644 ---- mysys_ssl/my_aes_openssl.cc.orig -+++ mysys_ssl/my_aes_openssl.cc -@@ -1,4 +1,4 @@ --/* Copyright (c) 2015, 2014 Oracle and/or its affiliates. All rights reserved. -+/* Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by -@@ -122,33 +122,46 @@ int my_aes_encrypt(const unsigned char *source, uint32 source_length, - const unsigned char *key, uint32 key_length, - enum my_aes_opmode mode, const unsigned char *iv) - { -- EVP_CIPHER_CTX ctx; -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ EVP_CIPHER_CTX stack_ctx; -+ EVP_CIPHER_CTX *ctx= &stack_ctx; -+#else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ -+ EVP_CIPHER_CTX *ctx= EVP_CIPHER_CTX_new(); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - const EVP_CIPHER *cipher= aes_evp_type(mode); - int u_len, f_len; - /* The real key to be used for encryption */ - unsigned char rkey[MAX_AES_KEY_LENGTH / 8]; - my_aes_create_key(key, key_length, rkey, mode); - -- if (!cipher || (EVP_CIPHER_iv_length(cipher) > 0 && !iv)) -+ if (!ctx || !cipher || (EVP_CIPHER_iv_length(cipher) > 0 && !iv)) - return MY_AES_BAD_DATA; - -- if (!EVP_EncryptInit(&ctx, cipher, rkey, iv)) -+ if (!EVP_EncryptInit(ctx, cipher, rkey, iv)) - goto aes_error; /* Error */ -- if (!EVP_CIPHER_CTX_set_padding(&ctx, 1)) -+ if (!EVP_CIPHER_CTX_set_padding(ctx, 1)) - goto aes_error; /* Error */ -- if (!EVP_EncryptUpdate(&ctx, dest, &u_len, source, source_length)) -+ if (!EVP_EncryptUpdate(ctx, dest, &u_len, source, source_length)) - goto aes_error; /* Error */ - -- if (!EVP_EncryptFinal(&ctx, dest + u_len, &f_len)) -+ if (!EVP_EncryptFinal(ctx, dest + u_len, &f_len)) - goto aes_error; /* Error */ - -- EVP_CIPHER_CTX_cleanup(&ctx); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ EVP_CIPHER_CTX_cleanup(ctx); -+#else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ -+ EVP_CIPHER_CTX_free(ctx); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - return u_len + f_len; - - aes_error: - /* need to explicitly clean up the error if we want to ignore it */ - ERR_clear_error(); -- EVP_CIPHER_CTX_cleanup(&ctx); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ EVP_CIPHER_CTX_cleanup(ctx); -+#else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ -+ EVP_CIPHER_CTX_free(ctx); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - return MY_AES_BAD_DATA; - } - -@@ -159,7 +172,12 @@ int my_aes_decrypt(const unsigned char *source, uint32 source_length, - enum my_aes_opmode mode, const unsigned char *iv) - { - -- EVP_CIPHER_CTX ctx; -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ EVP_CIPHER_CTX stack_ctx; -+ EVP_CIPHER_CTX *ctx= &stack_ctx; -+#else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ -+ EVP_CIPHER_CTX *ctx= EVP_CIPHER_CTX_new(); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - const EVP_CIPHER *cipher= aes_evp_type(mode); - int u_len, f_len; - -@@ -167,27 +185,34 @@ int my_aes_decrypt(const unsigned char *source, uint32 source_length, - unsigned char rkey[MAX_AES_KEY_LENGTH / 8]; - - my_aes_create_key(key, key_length, rkey, mode); -- if (!cipher || (EVP_CIPHER_iv_length(cipher) > 0 && !iv)) -+ if (!ctx || !cipher || (EVP_CIPHER_iv_length(cipher) > 0 && !iv)) - return MY_AES_BAD_DATA; - -- EVP_CIPHER_CTX_init(&ctx); -- -- if (!EVP_DecryptInit(&ctx, aes_evp_type(mode), rkey, iv)) -+ if (!EVP_DecryptInit(ctx, aes_evp_type(mode), rkey, iv)) - goto aes_error; /* Error */ -- if (!EVP_CIPHER_CTX_set_padding(&ctx, 1)) -+ if (!EVP_CIPHER_CTX_set_padding(ctx, 1)) - goto aes_error; /* Error */ -- if (!EVP_DecryptUpdate(&ctx, dest, &u_len, source, source_length)) -+ if (!EVP_DecryptUpdate(ctx, dest, &u_len, source, source_length)) - goto aes_error; /* Error */ -- if (!EVP_DecryptFinal_ex(&ctx, dest + u_len, &f_len)) -+ if (!EVP_DecryptFinal_ex(ctx, dest + u_len, &f_len)) - goto aes_error; /* Error */ - -- EVP_CIPHER_CTX_cleanup(&ctx); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ EVP_CIPHER_CTX_cleanup(ctx); -+#else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ -+ EVP_CIPHER_CTX_free(ctx); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ -+ - return u_len + f_len; - - aes_error: - /* need to explicitly clean up the error if we want to ignore it */ - ERR_clear_error(); -- EVP_CIPHER_CTX_cleanup(&ctx); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ EVP_CIPHER_CTX_cleanup(ctx); -+#else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ -+ EVP_CIPHER_CTX_free(ctx); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - return MY_AES_BAD_DATA; - } - -diff --git sql-common/client.c sql-common/client.c -index 19faefe8323..f1192306ccb 100644 ---- sql-common/client.c.orig -+++ sql-common/client.c -@@ -2744,7 +2744,11 @@ static int ssl_verify_server_cert(Vio *vio, const char* server_hostname, const c - goto error; - } - -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - cn= (char *) ASN1_STRING_data(cn_asn1); -+#else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ -+ cn= (char *) ASN1_STRING_get0_data(cn_asn1); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - - // There should not be any NULL embedded in the CN - if ((size_t)ASN1_STRING_length(cn_asn1) != strlen(cn)) -diff --git sql/mysqld.cc sql/mysqld.cc -index 4acff4e4d9b..307778771be 100644 ---- sql/mysqld.cc.orig -+++ sql/mysqld.cc -@@ -3408,7 +3408,11 @@ static int init_ssl() - { - #ifdef HAVE_OPENSSL - #ifndef HAVE_YASSL -+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) - CRYPTO_malloc_init(); -+#else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ -+ OPENSSL_malloc_init(); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - #endif - ssl_start(); - #ifndef EMBEDDED_LIBRARY -@@ -3434,7 +3438,9 @@ static int init_ssl() - opt_ssl_cipher, &error, - opt_ssl_crl, opt_ssl_crlpath, ssl_ctx_flags); - DBUG_PRINT("info",("ssl_acceptor_fd: 0x%lx", (long) ssl_acceptor_fd)); -- ERR_remove_state(0); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ ERR_remove_thread_state(0); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - if (!ssl_acceptor_fd) - { - /* -diff --git sql/rpl_slave.cc sql/rpl_slave.cc -index aee13e12cb2..37a20870bd4 100644 ---- sql/rpl_slave.cc.orig -+++ sql/rpl_slave.cc -@@ -6026,7 +6026,9 @@ ignore_log_space_limit=%d", - mysql_mutex_unlock(&mi->run_lock); - DBUG_LEAVE; // Must match DBUG_ENTER() - my_thread_end(); -- ERR_remove_state(0); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ ERR_remove_thread_state(0); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - pthread_exit(0); - return(0); // Avoid compiler warnings - } -@@ -6256,7 +6258,9 @@ extern "C" void *handle_slave_worker(void *arg) - } - - my_thread_end(); -- ERR_remove_state(0); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ ERR_remove_thread_state(0); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - pthread_exit(0); - DBUG_RETURN(0); - } -@@ -7597,7 +7601,9 @@ llstr(rli->get_group_master_log_pos(), llbuff)); - - DBUG_LEAVE; // Must match DBUG_ENTER() - my_thread_end(); -- ERR_remove_state(0); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ ERR_remove_thread_state(0); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - pthread_exit(0); - return 0; // Avoid compiler warnings - } -diff --git vio/viossl.c vio/viossl.c -index 5622cb7ee92..f738570f832 100644 ---- vio/viossl.c.orig -+++ vio/viossl.c -@@ -1,4 +1,4 @@ --/* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. -+/* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by -@@ -419,7 +421,11 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout, - for (j = 0; j < n; j++) - { - SSL_COMP *c = sk_SSL_COMP_value(ssl_comp_methods, j); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - DBUG_PRINT("info", (" %d: %s\n", c->id, c->name)); -+#else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ -+ DBUG_PRINT("info", (" %d: %s\n", SSL_COMP_get_id(c), SSL_COMP_get0_name(c))); -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - } - } - #endif -diff --git vio/viosslfactories.c vio/viosslfactories.c -index f50678a37b3..d3891fd8b12 100644 ---- vio/viosslfactories.c.orig -+++ vio/viosslfactories.c -@@ -1,4 +1,4 @@ --/* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. -+/* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by -@@ -121,13 +121,21 @@ static DH *get_dh2048(void) - DH *dh; - if ((dh=DH_new())) - { -- dh->p=BN_bin2bn(dh2048_p,sizeof(dh2048_p),NULL); -- dh->g=BN_bin2bn(dh2048_g,sizeof(dh2048_g),NULL); -- if (! dh->p || ! dh->g) -- { -+ BIGNUM *p= BN_bin2bn(dh2048_p, sizeof(dh2048_p), NULL); -+ BIGNUM *g= BN_bin2bn(dh2048_g, sizeof(dh2048_g), NULL); -+ if (!p || !g -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ || !DH_set0_pqg(dh, p, NULL, g) -+#endif /* OPENSSL_VERSION_NUMBER >= 0x10100000L */ -+ ) { -+ /* DH_free() will free 'p' and 'g' at once. */ - DH_free(dh); -- dh=0; -+ return NULL; - } -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ dh->p= p; -+ dh->g= g; -+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - } - return(dh); - } diff --git a/databases/mysql56-server/files/patch-libmysql_CMakeLists.txt b/databases/mysql56-server/files/patch-libmysql_CMakeLists.txt index 1f9b8282e5d3..4b4c58856b9f 100644 --- a/databases/mysql56-server/files/patch-libmysql_CMakeLists.txt +++ b/databases/mysql56-server/files/patch-libmysql_CMakeLists.txt @@ -1,15 +1,15 @@ ---- libmysql/CMakeLists.txt.orig 2013-07-10 18:17:29.000000000 +0200 -+++ libmysql/CMakeLists.txt 2013-08-12 08:59:49.000000000 +0200 -@@ -173,7 +173,7 @@ +--- libmysql/CMakeLists.txt.orig 2020-01-01 21:38:55.670126000 +0100 ++++ libmysql/CMakeLists.txt 2020-01-01 21:47:51.799099000 +0100 +@@ -205,7 +205,7 @@ IF(WIN32) ENDIF() # Merge several convenience libraries into one big mysqlclient --MERGE_LIBRARIES(mysqlclient STATIC ${LIBS} COMPONENT Development) -+MERGE_LIBRARIES(mysqlclient STATIC ${LIBS} COMPONENT Development NOINSTALL) +-MERGE_LIBRARIES(mysqlclient STATIC ${LIBS_TO_MERGE} COMPONENT Development) ++MERGE_LIBRARIES(mysqlclient STATIC ${LIBS_TO_MERGE} COMPONENT Development NOINSTALL) + TARGET_LINK_LIBRARIES(mysqlclient ${LIBS_TO_LINK}) # Visual Studio users need debug static library for debug projects - IF(MSVC) -@@ -200,19 +200,22 @@ +@@ -234,20 +234,23 @@ IF(UNIX) ENDMACRO() ENDIF() @@ -25,15 +25,16 @@ IF(NOT DISABLE_SHARED) # Merge several convenience libraries into one big mysqlclient # and link them together into shared library. - MERGE_LIBRARIES(libmysql SHARED ${LIBS} + MERGE_LIBRARIES(libmysql SHARED ${LIBS_TO_MERGE} EXPORTS ${CLIENT_API_FUNCTIONS} - COMPONENT SharedLibraries) -+ COMPONENT SharedLibraries NOINSTALL) -+ IF(FALSE) ++ COMPONENT SharedLibraries NOINSTALL) + TARGET_LINK_LIBRARIES(libmysql ${LIBS_TO_LINK}) ++ IF(FALSE) IF(UNIX) # libtool compatability IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE) -@@ -271,4 +274,5 @@ +@@ -316,4 +319,5 @@ IF(NOT DISABLE_SHARED) ${INSTALL_LIBDIR} SharedLibraries) ENDFOREACH() ENDIF() -- cgit v1.2.3