mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 18:41:56 +01:00
a1b6691f93
Compiler warnings like one listed below are generated during server build on MacOS: In file included from server-10.2-MDEV-23564/mysys_ssl/openssl.c:33: In file included from /usr/local/include/openssl/evp.h:16: In file included from /usr/local/include/openssl/bio.h:20: /usr/local/include/openssl/crypto.h:206:10: warning: 'CRYPTO_cleanup_all_ex_data' macro redefined [-Wmacro-redefined] ^ /mariadb/server-10.2-MDEV-23564/include/ssl_compat.h:46:9: note: previous definition is here ^ In case MariaDB serer is build with -DCMAKE_BUILD_TYPE=Debug it results in build error. The reason of compiler warnings is that header file <ssl_compat.h> included before the openssl system header files. File ssl_compat.h contains some macros with the same names as SSL API functions declared in the openssl system header files. It resulted in duplicate symbols that produces compiler warnings. To fix the issue the header file ssl_compat.h should be included after a line where openssl system header is included.
72 lines
1.9 KiB
C
72 lines
1.9 KiB
C
/*
|
|
Copyright (c) 2017, MariaDB Corporation.
|
|
|
|
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
|
|
the Free Software Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
|
|
|
#include <my_global.h>
|
|
|
|
/*
|
|
The check is only done for OpenSSL 1.1.x.
|
|
It could run for OpenSSL 1.0.x but it doesn't make much sense
|
|
and it hits this bug:
|
|
https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/1594748
|
|
*/
|
|
|
|
#ifndef HAVE_OPENSSL11
|
|
#include <ssl_compat.h>
|
|
int check_openssl_compatibility()
|
|
{
|
|
return 0;
|
|
}
|
|
#else
|
|
#include <openssl/evp.h>
|
|
#include <ssl_compat.h>
|
|
static uint testing, alloc_size, alloc_count;
|
|
|
|
static void *coc_malloc(size_t size, const char *f __attribute__((unused)),
|
|
int l __attribute__((unused)))
|
|
{
|
|
if (unlikely(testing))
|
|
{
|
|
alloc_size+= size;
|
|
alloc_count++;
|
|
}
|
|
return malloc(size);
|
|
}
|
|
|
|
int check_openssl_compatibility()
|
|
{
|
|
EVP_CIPHER_CTX *evp_ctx;
|
|
EVP_MD_CTX *md5_ctx;
|
|
|
|
if (!CRYPTO_set_mem_functions(coc_malloc, NULL, NULL))
|
|
return 0;
|
|
|
|
testing= 1;
|
|
alloc_size= alloc_count= 0;
|
|
evp_ctx= EVP_CIPHER_CTX_new();
|
|
EVP_CIPHER_CTX_free(evp_ctx);
|
|
if (alloc_count != 1 || !alloc_size || alloc_size > EVP_CIPHER_CTX_SIZE)
|
|
return 1;
|
|
|
|
alloc_size= alloc_count= 0;
|
|
md5_ctx= EVP_MD_CTX_create();
|
|
EVP_MD_CTX_destroy(md5_ctx);
|
|
if (alloc_count != 1 || !alloc_size || alloc_size > EVP_MD_CTX_SIZE)
|
|
return 1;
|
|
|
|
testing= 0;
|
|
return 0;
|
|
}
|
|
#endif
|