From 29163e83744facc1e1cc087d32899a863377a794 Mon Sep 17 00:00:00 2001 From: Georg Richter Date: Wed, 27 Jan 2016 18:19:35 +0100 Subject: [PATCH 1/3] Removed deprecated API functions: - mysql_close - mysql_create_db - mysql_drop_db - mysql_get_parameters Fixed build error when SSL is disabled max_allowed_packet and net_buffer size needs to be retrieved via mysql_get_option now (instead of mariadb_get_info) --- include/ma_pvio.h | 2 ++ include/mysql.h | 23 +++----------- libmariadb/libmariadb.c | 69 ++++++++++------------------------------- 3 files changed, 22 insertions(+), 72 deletions(-) diff --git a/include/ma_pvio.h b/include/ma_pvio.h index 4d1a5a45..6984bb7b 100644 --- a/include/ma_pvio.h +++ b/include/ma_pvio.h @@ -4,6 +4,8 @@ #ifdef HAVE_SSL #include +#else +#define MARIADB_SSL void #endif #define PVIO_SET_ERROR if (pvio->set_error) \ diff --git a/include/mysql.h b/include/mysql.h index 10cad813..2b833ad5 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -205,6 +205,10 @@ extern unsigned int mariadb_deinitialize_ssl; MYSQL_OPT_CONNECT_ATTR_DELETE, MYSQL_SERVER_PUBLIC_KEY, MYSQL_ENABLE_CLEARTEXT_PLUGIN, + MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, + MYSQL_OPT_SSL_ENFORCE, + MYSQL_OPT_MAX_ALLOWED_PACKET, + MYSQL_OPT_NET_BUFFER_LENGTH, /* MariaDB specific */ MYSQL_PROGRESS_CALLBACK=5999, @@ -387,16 +391,6 @@ typedef struct character_set unsigned int mbmaxlen; /* max. length for multibyte strings */ } MY_CHARSET_INFO; -typedef struct -{ - unsigned long *p_max_allowed_packet; - unsigned long *p_net_buffer_length; - void *extension; -} MYSQL_PARAMETERS; - -#define net_buffer_length (*mysql_get_parameters()->p_net_buffer_length) -#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet) - /* Local infile support functions */ #define LOCAL_INFILE_ERROR_LEN 512 @@ -448,8 +442,6 @@ int STDCALL mysql_ssl_set(MYSQL *mysql, const char *key, const char *cert, const char *ca, const char *capath, const char *cipher); const char * STDCALL mysql_get_ssl_cipher(MYSQL *mysql); -MYSQL * STDCALL mysql_connect(MYSQL *mysql, const char *host, - const char *user, const char *passwd); my_bool STDCALL mysql_change_user(MYSQL *mysql, const char *user, const char *passwd, const char *db); MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, @@ -467,8 +459,6 @@ int STDCALL mysql_send_query(MYSQL *mysql, const char *q, my_bool STDCALL mysql_read_query_result(MYSQL *mysql); int STDCALL mysql_real_query(MYSQL *mysql, const char *q, size_t length); -int STDCALL mysql_create_db(MYSQL *mysql, const char *DB); -int STDCALL mysql_drop_db(MYSQL *mysql, const char *DB); int STDCALL mysql_shutdown(MYSQL *mysql, enum mysql_enum_shutdown_level shutdown_level); int STDCALL mysql_dump_debug_info(MYSQL *mysql); int STDCALL mysql_refresh(MYSQL *mysql, @@ -526,7 +516,6 @@ size_t STDCALL mariadb_convert_string(const char *from, size_t *from_len, CHARSE int STDCALL mysql_optionsv(MYSQL *mysql,enum mysql_option option, ...); int STDCALL mysql_get_optionv(MYSQL *mysql, enum mysql_option option, void *arg, ...); int STDCALL mysql_get_option(MYSQL *mysql, enum mysql_option option, void *arg); -MYSQL_PARAMETERS *STDCALL mysql_get_parameters(void); unsigned long STDCALL mysql_hex_string(char *to, const char *from, size_t len); my_socket STDCALL mysql_get_socket(MYSQL *mysql); unsigned int STDCALL mysql_get_timeout_value(const MYSQL *mysql); @@ -673,7 +662,6 @@ struct st_mariadb_api { MYSQL * (STDCALL *mysql_init)(MYSQL *mysql); int (STDCALL *mysql_ssl_set)(MYSQL *mysql, const char *key, const char *cert, const char *ca, const char *capath, const char *cipher); const char * (STDCALL *mysql_get_ssl_cipher)(MYSQL *mysql); - MYSQL * (STDCALL *mysql_connect)(MYSQL *mysql, const char *host, const char *user, const char *passwd); my_bool (STDCALL *mysql_change_user)(MYSQL *mysql, const char *user, const char *passwd, const char *db); MYSQL * (STDCALL *mysql_real_connect)(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long clientflag); void (STDCALL *mysql_close)(MYSQL *sock); @@ -682,8 +670,6 @@ struct st_mariadb_api { int (STDCALL *mysql_send_query)(MYSQL *mysql, const char *q, size_t length); my_bool (STDCALL *mysql_read_query_result)(MYSQL *mysql); int (STDCALL *mysql_real_query)(MYSQL *mysql, const char *q, size_t length); - int (STDCALL *mysql_create_db)(MYSQL *mysql, const char *DB); - int (STDCALL *mysql_drop_db)(MYSQL *mysql, const char *DB); int (STDCALL *mysql_shutdown)(MYSQL *mysql, enum mysql_enum_shutdown_level shutdown_level); int (STDCALL *mysql_dump_debug_info)(MYSQL *mysql); int (STDCALL *mysql_refresh)(MYSQL *mysql, unsigned int refresh_options); @@ -730,7 +716,6 @@ struct st_mariadb_api { int (STDCALL *mysql_optionsv)(MYSQL *mysql,enum mysql_option option, ...); int (STDCALL *mysql_get_optionv)(MYSQL *mysql, enum mysql_option option, void *arg, ...); int (STDCALL *mysql_get_option)(MYSQL *mysql, enum mysql_option option, void *arg); - MYSQL_PARAMETERS *(STDCALL *mysql_get_parameters)(void); unsigned long (STDCALL *mysql_hex_string)(char *to, const char *from, size_t len); my_socket (STDCALL *mysql_get_socket)(MYSQL *mysql); unsigned int (STDCALL *mysql_get_timeout_value)(const MYSQL *mysql); diff --git a/libmariadb/libmariadb.c b/libmariadb/libmariadb.c index af17972f..c72e0ea8 100644 --- a/libmariadb/libmariadb.c +++ b/libmariadb/libmariadb.c @@ -79,8 +79,6 @@ #undef net_buffer_length extern ulong max_allowed_packet; /* net.c */ extern ulong net_buffer_length; /* net.c */ -static MYSQL_PARAMETERS mariadb_internal_parameters= -{&max_allowed_packet, &net_buffer_length, 0}; static my_bool mysql_client_init=0; static void mysql_close_options(MYSQL *mysql); @@ -1199,28 +1197,6 @@ mysql_get_ssl_cipher(MYSQL *mysql) ** NB! Errors are not reported until you do mysql_real_connect. **************************************************************************/ -/************************************************************************** -** Connect to sql server -** If host == 0 then use localhost -**************************************************************************/ - -MYSQL * STDCALL -mysql_connect(MYSQL *mysql,const char *host, - const char *user, const char *passwd) -{ - MYSQL *res; - mysql=mysql_init(mysql); /* Make it thread safe */ - { - DBUG_ENTER("mysql_connect"); - if (!(res=mysql_real_connect(mysql,host,user,passwd,NullS,0,NullS,0))) - { - if (mysql->free_me) - my_free(mysql); - } - DBUG_RETURN(res); - } -} - uchar *ma_send_connect_attr(MYSQL *mysql, uchar *buffer) { if (mysql->server_capabilities & CLIENT_CONNECT_ATTRS) @@ -2475,24 +2451,6 @@ mysql_list_processes(MYSQL *mysql) DBUG_RETURN(mysql_store_result(mysql)); } - -int STDCALL -mysql_create_db(MYSQL *mysql, const char *db) -{ - DBUG_ENTER("mysql_createdb"); - DBUG_PRINT("enter",("db: %s",db)); - DBUG_RETURN(simple_command(mysql, COM_CREATE_DB,db, (uint) strlen(db),0,0)); -} - - -int STDCALL -mysql_drop_db(MYSQL *mysql, const char *db) -{ - DBUG_ENTER("mysql_drop_db"); - DBUG_PRINT("enter",("db: %s",db)); - DBUG_RETURN(simple_command(mysql, COM_DROP_DB,db,(uint) strlen(db),0,0)); -} - /* In 5.0 this version became an additional parameter shutdown_level */ int STDCALL mysql_shutdown(MYSQL *mysql, enum mysql_enum_shutdown_level shutdown_level) @@ -2786,7 +2744,15 @@ mysql_optionsv(MYSQL *mysql,enum mysql_option option, ...) if (mysql->net.pvio) mysql->net.pvio->async_context= ctxt; break; - + case MYSQL_OPT_MAX_ALLOWED_PACKET: + if (mysql) + mysql->options.max_allowed_packet= (*(size_t *)arg1); + else + max_allowed_packet= (*(size_t *)arg1); + break; + case MYSQL_OPT_NET_BUFFER_LENGTH: + net_buffer_length= (*(size_t *)arg1); + break; case MYSQL_OPT_SSL_VERIFY_SERVER_CERT: if (*(my_bool *)arg1) mysql->options.client_flag |= CLIENT_SSL_VERIFY_SERVER_CERT; @@ -3129,6 +3095,13 @@ mysql_get_optionv(MYSQL *mysql, enum mysql_option option, void *arg, ...) } } break; + case MYSQL_OPT_MAX_ALLOWED_PACKET: + *((unsigned long *)arg)= (mysql) ? mysql->options.max_allowed_packet : + max_allowed_packet; + break; + case MYSQL_OPT_NET_BUFFER_LENGTH: + *((unsigned long *)arg)= net_buffer_length; + break; case MYSQL_SECURE_AUTH: *((my_bool *)arg)= mysql->options.secure_auth; break; @@ -3540,12 +3513,6 @@ mysql_get_server_name(MYSQL *mysql) return mariadb_connection(mysql) ? "MariaDB" : "MySQL"; } -MYSQL_PARAMETERS *STDCALL -mysql_get_parameters(void) -{ - return &mariadb_internal_parameters; -} - static my_socket mariadb_get_socket(MYSQL *mysql) { my_socket sock= INVALID_SOCKET; @@ -3832,7 +3799,6 @@ struct st_mariadb_api MARIADB_API= mysql_init, mysql_ssl_set, mysql_get_ssl_cipher, - mysql_connect, mysql_change_user, mysql_real_connect, mysql_close, @@ -3841,8 +3807,6 @@ struct st_mariadb_api MARIADB_API= mysql_send_query, mysql_read_query_result, mysql_real_query, - mysql_create_db, - mysql_drop_db, mysql_shutdown, mysql_dump_debug_info, mysql_refresh, @@ -3889,7 +3853,6 @@ struct st_mariadb_api MARIADB_API= mysql_optionsv, mysql_get_optionv, mysql_get_option, - mysql_get_parameters, mysql_hex_string, mysql_get_socket, mysql_get_timeout_value, From 2cc57282f62bf4f54e8cf8b8a22c298ca938e197 Mon Sep 17 00:00:00 2001 From: Georg Richter Date: Thu, 28 Jan 2016 16:53:26 +0100 Subject: [PATCH 2/3] removed mysql_get_parameters from export list disable creation of certificates if SSL is disabled or OpenSSL is not available --- CMakeLists.txt | 1 - libmariadb/CMakeLists.txt | 1 - unittest/libmariadb/CMakeLists.txt | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c31d5b89..b418c02c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -223,7 +223,6 @@ IF(NOT WITH_SSL STREQUAL "OFF") ENDIF() IF(WIN32) IF(WITH_SSL STREQUAL "SCHANNEL") - MESSAGE(STATUS "SSL_TYPE ${SSL_TYPE}") ADD_DEFINITIONS(-DHAVE_SCHANNEL -DHAVE_SSL) SET(SSL_SOURCES "${CMAKE_SOURCE_DIR}/libmariadb/secure/schannel.c" "${CMAKE_SOURCE_DIR}/libmariadb/secure/ma_schannel.c") INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/plugins/pvio/") diff --git a/libmariadb/CMakeLists.txt b/libmariadb/CMakeLists.txt index 26767358..dcdb192a 100644 --- a/libmariadb/CMakeLists.txt +++ b/libmariadb/CMakeLists.txt @@ -84,7 +84,6 @@ SET(EXPORT_SYMBOLS mysql_get_host_info mysql_get_option mysql_get_optionv - mysql_get_parameters mysql_get_proto_info mysql_get_server_info mysql_get_server_name diff --git a/unittest/libmariadb/CMakeLists.txt b/unittest/libmariadb/CMakeLists.txt index 77867cb2..cee2743e 100644 --- a/unittest/libmariadb/CMakeLists.txt +++ b/unittest/libmariadb/CMakeLists.txt @@ -27,7 +27,7 @@ SET(API_TESTS "async" "basic-t" "fetch" "charset" "logs" "cursor" "errors" "view #exclude following tests from ctests, since we need to run them maually with different credentials SET(MANUAL_TESTS "t_aurora") # Get finger print from server certificate -IF(WITH_SSL) +IF(WITH_SSL AND OPENSSL_FOUND) #create certificates IF(EXISTS "${CMAKE_SOURCE_DIR}/unittest/libmariadb/certs/server-cert.pem") From 3baf4a0f7f1e16e5bd28778886067d657c39d9ca Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Thu, 28 Jan 2016 19:55:43 +0100 Subject: [PATCH 3/3] Do not set CMAKE_INSTALL_PREFIX to empty string on Windows --- CMakeLists.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b418c02c..95ef41d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -299,9 +299,6 @@ IF(CLIENT_DOCS) DESTINATION ${DOCS_INSTALL_DIR_${INSTALL_LAYOUT}}) ENDIF() -IF(MSVC) - SET(CMAKE_INSTALL_PREFIX "") -ENDIF() IF(WIN32 AND CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") ADD_SUBDIRECTORY(win/packaging)