Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mariadb-connector-c for openSUSE:Factory checked in at 2021-11-23 22:09:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mariadb-connector-c (Old) and /work/SRC/openSUSE:Factory/.mariadb-connector-c.new.1895 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mariadb-connector-c" Tue Nov 23 22:09:53 2021 rev:35 rq:932645 version:3.2.5 Changes: -------- --- /work/SRC/openSUSE:Factory/mariadb-connector-c/mariadb-connector-c.changes 2021-10-23 23:13:58.800981204 +0200 +++ /work/SRC/openSUSE:Factory/.mariadb-connector-c.new.1895/mariadb-connector-c.changes 2021-11-23 22:12:01.002590929 +0100 @@ -1,0 +2,8 @@ +Thu Nov 18 15:55:18 UTC 2021 - Danilo Spinella <danilo.spine...@suse.com> + +- Update to 3.2.5: + * release notes and changelog: + https://mariadb.com/kb/en/library/mariadb-connector-c-325-release-notes + https://mariadb.com/kb/en/library/mariadb-connector-c-325-changelog + +------------------------------------------------------------------- Old: ---- mariadb-connector-c-3.2.4-src.tar.gz mariadb-connector-c-3.2.4-src.tar.gz.asc New: ---- mariadb-connector-c-3.2.5-src.tar.gz mariadb-connector-c-3.2.5-src.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mariadb-connector-c.spec ++++++ --- /var/tmp/diff_new_pack.syBjq1/_old 2021-11-23 22:12:01.594588971 +0100 +++ /var/tmp/diff_new_pack.syBjq1/_new 2021-11-23 22:12:01.614588905 +0100 @@ -25,7 +25,7 @@ %endif %bcond_with sqlite3 Name: mariadb-connector-c -Version: 3.2.4 +Version: 3.2.5 Release: 0 Summary: MariaDB connector in C License: LGPL-2.1-or-later ++++++ mariadb-connector-c-3.2.4-src.tar.gz -> mariadb-connector-c-3.2.5-src.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/.travis.yml new/mariadb-connector-c-3.2.5-src/.travis.yml --- old/mariadb-connector-c-3.2.4-src/.travis.yml 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/.travis.yml 2021-11-03 16:35:27.000000000 +0100 @@ -50,17 +50,17 @@ - env: srv=mariadb v=10.4 local=1 - env: srv=mariadb v=10.5 local=1 - env: srv=mariadb v=10.6 local=1 - - if: env(CONNECTOR_TEST_SECRET_KEY) + - if: type = push AND fork = false env: srv=mariadb-es v=10.5 - - if: env(CONNECTOR_TEST_SECRET_KEY) + - if: type = push AND fork = false env: srv=maxscale - - if: env(CONNECTOR_TEST_SECRET_KEY) + - if: type = push AND fork = false env: srv=build v=10.6 - env: srv=mysql v=5.7 native=1 - env: srv=mysql v=8.0 native=1 - - if: env(CONNECTOR_TEST_SECRET_KEY) + - if: type = push AND fork = false env: srv=skysql - - if: env(CONNECTOR_TEST_SECRET_KEY) + - if: type = push AND fork = false env: srv=skysql-ha - env: server_branch=10.6 - env: server_branch=10.6 TEST_OPTION=--ps-protocol diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/CMakeLists.txt new/mariadb-connector-c-3.2.5-src/CMakeLists.txt --- old/mariadb-connector-c-3.2.4-src/CMakeLists.txt 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/CMakeLists.txt 2021-11-03 16:35:27.000000000 +0100 @@ -36,7 +36,7 @@ SET(CPACK_PACKAGE_VERSION_MAJOR 3) SET(CPACK_PACKAGE_VERSION_MINOR 2) -SET(CPACK_PACKAGE_VERSION_PATCH 4) +SET(CPACK_PACKAGE_VERSION_PATCH 5) SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") MATH(EXPR MARIADB_PACKAGE_VERSION_ID "${CPACK_PACKAGE_VERSION_MAJOR} * 10000 + ${CPACK_PACKAGE_VERSION_MINOR} * 100 + @@ -165,9 +165,29 @@ ELSE() SET(MARIADB_CLIENT_VERSION_MAJOR "10") SET(MARIADB_CLIENT_VERSION_MINOR "6") - SET(MARIADB_CLIENT_VERSION_PATCH "4") + SET(MARIADB_CLIENT_VERSION_PATCH "5") SET(MARIADB_CLIENT_VERSION_EXTRA "") ENDIF() + +IF(WIN32) + # version in resource files need to be consistent + # with server's , so that MSI minor upgrade work. + # if this is not a subproject build, C/C version is used. + FOREACH(v MAJOR MINOR PATCH TINY) + IF(DEFINED ${v}_VERSION) + SET(${v}_FILE_VERSION "${${v}_VERSION}") + ELSEIF(DEFINED CPACK_PACKAGE_VERSION_${v}) + SET(${v}_FILE_VERSION "${CPACK_PACKAGE_VERSION_${v}}") + ELSE() + SET(${v}_FILE_VERSION "0") + ENDIF() + IF(NOT ${v}_FILE_VERSION MATCHES "^[0-9]+$") + MESSAGE(FATAL_ERROR + "${v}_FILE_VERSION is not numeric - '${${v}_FILE_VERSION}'") + ENDIF() + ENDFOREACH() +ENDIF() + SET(MARIADB_CLIENT_VERSION "${MARIADB_CLIENT_VERSION_MAJOR}.${MARIADB_CLIENT_VERSION_MINOR}.${MARIADB_CLIENT_VERSION_PATCH}${MARIADB_CLIENT_VERSION_EXTRA}") SET(MARIADB_BASE_VERSION "mariadb-${MARIADB_CLIENT_VERSION_MAJOR}.${MARIADB_CLIENT_VERSION_MINOR}") MATH(EXPR MARIADB_VERSION_ID "${MARIADB_CLIENT_VERSION_MAJOR} * 10000 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/cmake/ConnectorName.cmake new/mariadb-connector-c-3.2.5-src/cmake/ConnectorName.cmake --- old/mariadb-connector-c-3.2.4-src/cmake/ConnectorName.cmake 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/cmake/ConnectorName.cmake 2021-11-03 16:35:27.000000000 +0100 @@ -11,8 +11,8 @@ SET(IS64 1) ENDIF() -SET (PLAFORM_NAME CMAKE_SYSTEM_NAME) -SET (MACHINE_NAME CMAKE_SYSTEM_PROCESSOR) +SET (PLATFORM_NAME ${CMAKE_SYSTEM_NAME}) +SET (MACHINE_NAME ${CMAKE_SYSTEM_PROCESSOR}) SET (CONCAT_SIGN "-") IF(CMAKE_SYSTEM_NAME MATCHES "Windows") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/include/ma_crypt.h new/mariadb-connector-c-3.2.5-src/include/ma_crypt.h --- old/mariadb-connector-c-3.2.4-src/include/ma_crypt.h 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/include/ma_crypt.h 2021-11-03 16:35:27.000000000 +0100 @@ -44,7 +44,7 @@ #define MA_MAX_HASH_SIZE 64 /** \typedef MRL hash context */ -#if defined(_WIN32) +#if defined(HAVE_WINCRYPT) #include <windows.h> #include <bcrypt.h> typedef struct { @@ -55,7 +55,8 @@ DWORD digest_len; } MA_HASH_CTX; #elif defined(HAVE_OPENSSL) -typedef void MA_HASH_CTX; +#include <openssl/evp.h> +typedef EVP_MD_CTX MA_HASH_CTX; #elif defined(HAVE_GNUTLS) typedef struct { void *ctx; @@ -153,7 +154,7 @@ unsigned char *digest) { MA_HASH_CTX *ctx= NULL; -#ifdef _WIN32 +#ifdef HAVE_WINCRYPT MA_HASH_CTX dctx; ctx= &dctx; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/include/mariadb_com.h new/mariadb-connector-c-3.2.5-src/include/mariadb_com.h --- old/mariadb-connector-c-3.2.4-src/include/mariadb_com.h 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/include/mariadb_com.h 2021-11-03 16:35:27.000000000 +0100 @@ -31,7 +31,7 @@ #define NAME_CHAR_LEN 64 #define NAME_LEN 256 /* Field/table name length */ -#define HOSTNAME_LENGTH 60 +#define HOSTNAME_LENGTH 255 #define SYSTEM_MB_MAX_CHAR_LENGTH 4 #define USERNAME_CHAR_LENGTH 128 #define USERNAME_LENGTH (USERNAME_CHAR_LENGTH * SYSTEM_MB_MAX_CHAR_LENGTH) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/libmariadb/CMakeLists.txt new/mariadb-connector-c-3.2.5-src/libmariadb/CMakeLists.txt --- old/mariadb-connector-c-3.2.4-src/libmariadb/CMakeLists.txt 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/libmariadb/CMakeLists.txt 2021-11-03 16:35:27.000000000 +0100 @@ -315,6 +315,9 @@ IF(NOT CMAKE_SYSTEM_NAME MATCHES AIX) ADD_DEFINITIONS(-DLIBICONV_PLUG) ENDIF() + IF(APPLE) + ADD_DEFINITIONS(-Wno-deprecated-declarations) + ENDIF() ENDIF() IF(ZLIB_FOUND AND WITH_EXTERNAL_ZLIB) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/libmariadb/ma_client_plugin.c.in new/mariadb-connector-c-3.2.5-src/libmariadb/ma_client_plugin.c.in --- old/mariadb-connector-c-3.2.4-src/libmariadb/ma_client_plugin.c.in 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/libmariadb/ma_client_plugin.c.in 2021-11-03 16:35:27.000000000 +0100 @@ -330,6 +330,7 @@ mysql_client_register_plugin(MYSQL *mysql, struct st_mysql_client_plugin *plugin) { + struct st_mysql_client_plugin *found_plugin= NULL; va_list unused; LINT_INIT_STRUCT(unused); @@ -339,18 +340,11 @@ pthread_mutex_lock(&LOCK_load_client_plugin); /* make sure the plugin wasn't loaded meanwhile */ - if (find_plugin(plugin->name, plugin->type)) - { - my_set_error(mysql, CR_AUTH_PLUGIN_CANNOT_LOAD, - SQLSTATE_UNKNOWN, ER(CR_AUTH_PLUGIN_CANNOT_LOAD), - plugin->name, "it is already loaded"); - plugin= NULL; - } - else - plugin= add_plugin(mysql, plugin, 0, 0, unused); + if (!(found_plugin= find_plugin(plugin->name, plugin->type))) + found_plugin= add_plugin(mysql, plugin, 0, 0, unused); pthread_mutex_unlock(&LOCK_load_client_plugin); - return plugin; + return found_plugin; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/libmariadb/ma_stmt_codec.c new/mariadb-connector-c-3.2.5-src/libmariadb/ma_stmt_codec.c --- old/mariadb-connector-c-3.2.4-src/libmariadb/ma_stmt_codec.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/libmariadb/ma_stmt_codec.c 2021-11-03 16:35:27.000000000 +0100 @@ -1240,11 +1240,11 @@ mysql_ps_fetch_functions[MYSQL_TYPE_TINY].func = ps_fetch_int8; mysql_ps_fetch_functions[MYSQL_TYPE_TINY].pack_len = 1; - mysql_ps_fetch_functions[MYSQL_TYPE_TINY].max_len = 3; + mysql_ps_fetch_functions[MYSQL_TYPE_TINY].max_len = 4; mysql_ps_fetch_functions[MYSQL_TYPE_SHORT].func = ps_fetch_int16; mysql_ps_fetch_functions[MYSQL_TYPE_SHORT].pack_len = 2; - mysql_ps_fetch_functions[MYSQL_TYPE_SHORT].max_len = 5; + mysql_ps_fetch_functions[MYSQL_TYPE_SHORT].max_len = 6; mysql_ps_fetch_functions[MYSQL_TYPE_YEAR].func = ps_fetch_int16; mysql_ps_fetch_functions[MYSQL_TYPE_YEAR].pack_len = 2; @@ -1256,7 +1256,7 @@ mysql_ps_fetch_functions[MYSQL_TYPE_LONG].func = ps_fetch_int32; mysql_ps_fetch_functions[MYSQL_TYPE_LONG].pack_len = 4; - mysql_ps_fetch_functions[MYSQL_TYPE_LONG].max_len = 10; + mysql_ps_fetch_functions[MYSQL_TYPE_LONG].max_len = 11; mysql_ps_fetch_functions[MYSQL_TYPE_LONGLONG].func = ps_fetch_int64; mysql_ps_fetch_functions[MYSQL_TYPE_LONGLONG].pack_len= 8; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/libmariadb/mariadb_lib.c new/mariadb-connector-c-3.2.5-src/libmariadb/mariadb_lib.c --- old/mariadb-connector-c-3.2.4-src/libmariadb/mariadb_lib.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/libmariadb/mariadb_lib.c 2021-11-03 16:35:27.000000000 +0100 @@ -4174,7 +4174,7 @@ *((char **)arg)= (char *)ma_pvio_tls_cipher(mysql->net.pvio->ctls); else #endif - goto error; + *((char **)arg)= NULL; break; case MARIADB_CLIENT_ERRORS: *((char ***)arg)= (char **)client_errors; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/libmariadb/mariadb_stmt.c new/mariadb-connector-c-3.2.5-src/libmariadb/mariadb_stmt.c --- old/mariadb-connector-c-3.2.4-src/libmariadb/mariadb_stmt.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/libmariadb/mariadb_stmt.c 2021-11-03 16:35:27.000000000 +0100 @@ -252,13 +252,24 @@ { if (stmt->fields[i].flags & ZEROFILL_FLAG) { - size_t len= MAX(stmt->fields[i].length, mysql_ps_fetch_functions[stmt->fields[i].type].max_len); + /* The -1 is because a ZEROFILL:ed field is always unsigned */ + size_t len= MAX(stmt->fields[i].length, mysql_ps_fetch_functions[stmt->fields[i].type].max_len-1); if (len > stmt->fields[i].max_length) stmt->fields[i].max_length= (unsigned long)len; } else if (!stmt->fields[i].max_length) { stmt->fields[i].max_length= mysql_ps_fetch_functions[stmt->fields[i].type].max_len; + if (stmt->fields[i].flags & UNSIGNED_FLAG && + stmt->fields[i].type != MYSQL_TYPE_INT24 && + stmt->fields[i].type != MYSQL_TYPE_LONGLONG) + { + /* + Unsigned integers has one character less than signed integers + as '-' is counted as part of max_length + */ + stmt->fields[i].max_length--; + } } cp+= mysql_ps_fetch_functions[stmt->fields[i].type].pack_len; } @@ -798,7 +809,7 @@ case MYSQL_TYPE_ENUM: case MYSQL_TYPE_BIT: case MYSQL_TYPE_SET: - size+= 5; /* max 8 bytes for size */ + size+= 9; /* max 8 bytes for size */ size+= (size_t)ma_get_length(stmt, i, 0); break; default: @@ -1634,6 +1645,7 @@ if (stmt->prebind_params != stmt->param_count) { SET_CLIENT_STMT_ERROR(stmt, CR_INVALID_PARAMETER_NO, SQLSTATE_UNKNOWN, 0); + stmt->param_count= stmt->prebind_params; return 1; } } else { @@ -1920,6 +1932,13 @@ { SET_CLIENT_STMT_ERROR(stmt, mysql->net.last_errno, mysql->net.sqlstate, mysql->net.last_error); + /* if mariadb_stmt_execute_direct was used, we need to send the number + of parameters to the specified prebinded value to prevent possible + memory overrun */ + if (stmt->prebind_params) + { + stmt->param_count= stmt->prebind_params; + } stmt->state= MYSQL_STMT_PREPARED; return(1); } @@ -1994,7 +2013,8 @@ /* Only cursor read */ stmt->default_rset_handler = _mysql_stmt_use_result; - } else if (stmt->flags & CURSOR_TYPE_READ_ONLY) + } else if (stmt->flags & CURSOR_TYPE_READ_ONLY && + !(stmt->upsert_status.server_status & SERVER_MORE_RESULTS_EXIST)) { /* We have asked for CURSOR but got no cursor, because the condition diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/libmariadb/secure/ma_schannel.c new/mariadb-connector-c-3.2.5-src/libmariadb/secure/ma_schannel.c --- old/mariadb-connector-c-3.2.4-src/libmariadb/secure/ma_schannel.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/libmariadb/secure/ma_schannel.c 2021-11-03 16:35:27.000000000 +0100 @@ -96,7 +96,7 @@ /* Allocate data buffer */ - if (!(IoBuffer = LocalAlloc(LMEM_FIXED, SC_IO_BUFFER_SIZE))) + if (!(IoBuffer = malloc(SC_IO_BUFFER_SIZE))) return SEC_E_INSUFFICIENT_MEMORY; cbIoBuffer = 0; @@ -245,7 +245,7 @@ ma_schannel_set_sec_error(pvio, rc); DeleteSecurityContext(&sctx->hCtxt); } - LocalFree(IoBuffer); + free(IoBuffer); return rc; } @@ -272,7 +272,6 @@ MARIADB_PVIO *pvio; SECURITY_STATUS sRet; DWORD OutFlags; - DWORD r; SC_CTX *sctx; SecBuffer ExtraData; DWORD SFlags= ISC_REQ_SEQUENCE_DETECT | ISC_REQ_REPLAY_DETECT | @@ -318,7 +317,7 @@ return sRet; } - /* send client hello packaet */ + /* send client hello */ if(BuffersOut.cbBuffer != 0 && BuffersOut.pvBuffer != NULL) { ssize_t nbytes = (DWORD)pvio->methods->write(pvio, (uchar *)BuffersOut.pvBuffer, (size_t)BuffersOut.cbBuffer); @@ -328,7 +327,6 @@ sRet= SEC_E_INTERNAL_ERROR; goto end; } - r = (DWORD)nbytes; } sRet= ma_schannel_handshake_loop(pvio, TRUE, &ExtraData); @@ -564,8 +562,6 @@ SECURITY_STATUS scRet; SecBufferDesc Message; SecBuffer Buffers[4]; - DWORD cbMessage; - PBYTE pbMessage; SC_CTX *sctx= (SC_CTX *)pvio->ctls->ssl; size_t payload; ssize_t nbytes; @@ -574,8 +570,6 @@ payload= MIN(WriteBufferSize, sctx->Sizes.cbMaximumMessage); memcpy(&sctx->IoBuffer[sctx->Sizes.cbHeader], WriteBuffer, payload); - pbMessage = sctx->IoBuffer + sctx->Sizes.cbHeader; - cbMessage = (DWORD)payload; Buffers[0].pvBuffer = sctx->IoBuffer; Buffers[0].cbBuffer = sctx->Sizes.cbHeader; @@ -589,10 +583,9 @@ Buffers[2].cbBuffer = sctx->Sizes.cbTrailer; Buffers[2].BufferType = SECBUFFER_STREAM_TRAILER; - Buffers[3].pvBuffer = SECBUFFER_EMPTY; // Pointer to buffer 4 - Buffers[3].cbBuffer = SECBUFFER_EMPTY; // length of buffer 4 - Buffers[3].BufferType = SECBUFFER_EMPTY; // Type of the buffer 4 - + Buffers[3].pvBuffer = SECBUFFER_EMPTY; + Buffers[3].cbBuffer = SECBUFFER_EMPTY; + Buffers[3].BufferType = SECBUFFER_EMPTY; Message.ulVersion = SECBUFFER_VERSION; Message.cBuffers = 4; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/libmariadb/secure/openssl.c new/mariadb-connector-c-3.2.5-src/libmariadb/secure/openssl.c --- old/mariadb-connector-c-3.2.4-src/libmariadb/secure/openssl.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/libmariadb/secure/openssl.c 2021-11-03 16:35:27.000000000 +0100 @@ -143,26 +143,6 @@ } #ifndef HAVE_OPENSSL_1_1_API -/* - thread safe callbacks for OpenSSL - Crypto call back functions will be - set during ssl_initialization - */ -#if OPENSSL_VERSION_NUMBER < 0x10000000L -static unsigned long my_cb_threadid(void) -{ - /* cast pthread_t to unsigned long */ - return (unsigned long) pthread_self(); -} -#else -static void my_cb_threadid(CRYPTO_THREADID *id) -{ - CRYPTO_THREADID_set_numeric(id, (unsigned long)pthread_self()); -} -#endif -#endif - -#ifndef HAVE_OPENSSL_1_1_API static void my_cb_locking(int mode, int n, const char *file __attribute__((unused)), int line __attribute__((unused))) @@ -175,25 +155,18 @@ static int ssl_thread_init() { - if (!CRYPTO_THREADID_get_callback() -#ifndef OPENSSL_NO_DEPRECATED - && !CRYPTO_get_id_callback() -#endif - ) + if (LOCK_crypto == NULL) { int i, max= CRYPTO_num_locks(); - if (LOCK_crypto == NULL) - { - if (!(LOCK_crypto= - (pthread_mutex_t *)ma_malloc(sizeof(pthread_mutex_t) * max, MYF(0)))) - return 1; + if (!(LOCK_crypto= + (pthread_mutex_t *)ma_malloc(sizeof(pthread_mutex_t) * max, MYF(0)))) + return 1; + + for (i=0; i < max; i++) + pthread_mutex_init(&LOCK_crypto[i], NULL); - for (i=0; i < max; i++) - pthread_mutex_init(&LOCK_crypto[i], NULL); - } CRYPTO_set_locking_callback(my_cb_locking); - CRYPTO_THREADID_set_callback(my_cb_threadid); } return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/plugins/auth/CMakeLists.txt new/mariadb-connector-c-3.2.5-src/plugins/auth/CMakeLists.txt --- old/mariadb-connector-c-3.2.4-src/plugins/auth/CMakeLists.txt 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/plugins/auth/CMakeLists.txt 2021-11-03 16:35:27.000000000 +0100 @@ -5,6 +5,7 @@ SET(CRYPTO_PLUGIN 1) IF(WIN32) + ADD_DEFINITIONS(-DHAVE_WINCRYPT) SET(CRYPT_SOURCE ${CC_SOURCE_DIR}/libmariadb/secure/win_crypt.c) SET(CRYPT_LIBS crypt32 bcrypt) ELSEIF(WITH_SSL STREQUAL "OPENSSL") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/plugins/auth/caching_sha2_pw.c new/mariadb-connector-c-3.2.5-src/plugins/auth/caching_sha2_pw.c --- old/mariadb-connector-c-3.2.4-src/plugins/auth/caching_sha2_pw.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/plugins/auth/caching_sha2_pw.c 2021-11-03 16:35:27.000000000 +0100 @@ -20,8 +20,7 @@ #define _GNU_SOURCE 1 #endif -#ifdef _WIN32 -#define HAVE_WINCRYPT +#ifdef HAVE_WINCRYPT #undef HAVE_OPENSSL #undef HAVE_GNUTLS #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/plugins/auth/ed25519.c new/mariadb-connector-c-3.2.5-src/plugins/auth/ed25519.c --- old/mariadb-connector-c-3.2.4-src/plugins/auth/ed25519.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/plugins/auth/ed25519.c 2021-11-03 16:35:27.000000000 +0100 @@ -20,8 +20,7 @@ #define _GNU_SOURCE 1 #endif -#ifdef _WIN32 -#define HAVE_WINCRYPT +#ifdef HAVE_WINCRYPT #undef HAVE_OPENSSL #undef HAVE_GNUTLS #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/plugins/auth/my_auth.c new/mariadb-connector-c-3.2.5-src/plugins/auth/my_auth.c --- old/mariadb-connector-c-3.2.4-src/plugins/auth/my_auth.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/plugins/auth/my_auth.c 2021-11-03 16:35:27.000000000 +0100 @@ -85,6 +85,7 @@ if (mysql && mysql->passwd[0]) { char scrambled[SCRAMBLE_LENGTH + 1]; + memset(scrambled, 0, SCRAMBLE_LENGTH + 1); ma_scramble_41((uchar *)scrambled, (char*)pkt, mysql->passwd); if (vio->write_packet(vio, (uchar*)scrambled, SCRAMBLE_LENGTH)) return CR_ERROR; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/plugins/auth/sha256_pw.c new/mariadb-connector-c-3.2.5-src/plugins/auth/sha256_pw.c --- old/mariadb-connector-c-3.2.4-src/plugins/auth/sha256_pw.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/plugins/auth/sha256_pw.c 2021-11-03 16:35:27.000000000 +0100 @@ -20,10 +20,9 @@ #define _GNU_SOURCE 1 #endif -#ifdef _WIN32 +#ifdef HAVE_WINCRYPT #undef HAVE_GNUTLS #undef HAVE_OPENSSL -#define HAVE_WINCRYPT #endif #if defined(HAVE_OPENSSL) || defined(HAVE_WINCRYPT) @@ -42,7 +41,7 @@ #include <dlfcn.h> #endif -#if defined(WIN32) +#if defined(HAVE_WINCRYPT) #include <wincrypt.h> #elif defined(HAVE_OPENSSL) #include <openssl/rsa.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/async.c new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/async.c --- old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/async.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/async.c 2021-11-03 16:35:27.000000000 +0100 @@ -37,7 +37,7 @@ if (type > MARIADB_CONNECTION_TCP) { skip_async= 1; - diag("Asnyc IO not supported"); + diag("Async IO not supported"); } return OK; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/bulk1.c new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/bulk1.c --- old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/bulk1.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/bulk1.c 2021-11-03 16:35:27.000000000 +0100 @@ -925,7 +925,7 @@ rc= mysql_stmt_prepare(stmt, "INSERT INTO bulk_null VALUES (?,?,?,?,?)", -1); check_stmt_rc(rc, stmt); - memset(bind, 0, sizeof(MYSQL_BIND)*2); + memset(bind, 0, sizeof(MYSQL_BIND)*5); rc= mysql_stmt_attr_set(stmt, STMT_ATTR_ARRAY_SIZE, &array_size); check_stmt_rc(rc, stmt); @@ -1011,6 +1011,7 @@ diag("waiting for server fix"); return SKIP; + memset(&bind, 0, 2 * sizeof(MYSQL_BIND)); for (i=0; i < 3; i++) { MYSQL_RES *res; @@ -1018,8 +1019,6 @@ MYSQL_STMT *stmt= mysql_stmt_init(mysql); rc= mysql_query(mysql, "CREATE OR REPLACE TABLE t1 (a int not null auto_increment primary key, b int)"); check_mysql_rc(rc, mysql); - - memset(&bind, 0, sizeof(MYSQL_BIND)); switch (i) { case 0: bind[0].buffer_type= MYSQL_TYPE_LONG; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/cursor.c new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/cursor.c --- old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/cursor.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/cursor.c 2021-11-03 16:35:27.000000000 +0100 @@ -210,12 +210,6 @@ } } } - if (!error_count) - { - unsigned total_row_count= 0; - for (fetch= fetch_array; fetch < fetch_array + query_count; ++fetch) - total_row_count+= fetch->row_count; - } for (fetch= fetch_array; fetch < fetch_array + query_count; ++fetch) stmt_fetch_close(fetch); free(fetch_array); @@ -1494,7 +1488,10 @@ int rc; unsigned long type= CURSOR_TYPE_READ_ONLY; - rc= mysql_query(mysql, "CREATE TEMPORARY TABLE t10 (a INT)"); + rc= mysql_query(mysql, "DROP TABLE IF EXISTS t10"); + check_mysql_rc(rc, mysql); + + rc= mysql_query(mysql, "CREATE TABLE t10 (a INT)"); check_mysql_rc(rc, mysql); stmt= mysql_stmt_init(mysql); @@ -1505,10 +1502,9 @@ check_stmt_rc(rc, stmt); rc= mysql_stmt_execute(stmt); check_stmt_rc(rc, stmt); - mysql_stmt_close(stmt); - - rc= mysql_query(mysql, "DROP TABLE t10"); + rc= mysql_query(mysql, "DROP TABLE IF EXISTS t10"); check_mysql_rc(rc, mysql); + mysql_stmt_close(stmt); return OK; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/misc.c new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/misc.c --- old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/misc.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/misc.c 2021-11-03 16:35:27.000000000 +0100 @@ -1064,6 +1064,10 @@ return OK; } +#ifndef __has_feature +# define __has_feature(x) 0 +#endif +#if !__has_feature(memory_sanitizer) #ifdef HAVE_REMOTEIO void *remote_plugin; static int test_remote1(MYSQL *mysql) @@ -1131,6 +1135,7 @@ return OK; } #endif +#endif #ifndef _WIN32 static int test_mdev12965(MYSQL *unused __attribute__((unused))) @@ -1499,6 +1504,7 @@ } #endif +#if !__has_feature(memory_sanitizer) static int test_conc457(MYSQL *mysql) { MYSQL_RES *result; @@ -1511,6 +1517,7 @@ mysql_free_result(result); return OK; } +#endif static int test_conc458(MYSQL *my __attribute__((unused))) { @@ -1618,7 +1625,9 @@ {"test_ext_field_attr", test_ext_field_attr, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, {"test_conc533", test_conc533, TEST_CONNECTION_NEW, 0, NULL, NULL}, {"test_conc458", test_conc458, TEST_CONNECTION_NONE, 0, NULL, NULL}, +#if !__has_feature(memory_sanitizer) {"test_conc457", test_conc457, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, +#endif {"test_conc384", test_conc384, TEST_CONNECTION_NONE, 0, NULL, NULL}, #ifndef _WIN32 {"test_mdev12965", test_mdev12965, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, @@ -1629,10 +1638,12 @@ {"test_server_status", test_server_status, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, {"test_read_timeout", test_read_timeout, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, {"test_zerofill", test_zerofill, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, +#if !__has_feature(memory_sanitizer) #ifdef HAVE_REMOTEIO {"test_remote1", test_remote1, TEST_CONNECTION_NEW, 0, NULL, NULL}, {"test_remote2", test_remote2, TEST_CONNECTION_NEW, 0, NULL, NULL}, #endif +#endif {"test_get_info", test_get_info, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, {"test_conc117", test_conc117, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, {"test_conc_114", test_conc_114, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/ps_bugs.c new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/ps_bugs.c --- old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/ps_bugs.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/ps_bugs.c 2021-11-03 16:35:27.000000000 +0100 @@ -5384,8 +5384,177 @@ return OK; } +static int test_conc566(MYSQL *mysql) +{ + int rc; + MYSQL_STMT *stmt = mysql_stmt_init(mysql); + unsigned long cursor = CURSOR_TYPE_READ_ONLY; + const char* query= "call sp()"; + + rc= mysql_query(mysql,"drop procedure if exists sp"); + check_mysql_rc(rc, mysql); + + rc= mysql_query(mysql,"create procedure sp() select 1"); + check_mysql_rc(rc, mysql); + + rc= mysql_stmt_prepare(stmt,query,-1); + check_stmt_rc(rc, stmt); + + rc= mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, &cursor); + check_stmt_rc(rc, stmt); + + rc= mysql_stmt_execute(stmt); + check_stmt_rc(rc, stmt); + + mysql_stmt_close(stmt); + + rc= mysql_query(mysql,"drop procedure sp"); + check_mysql_rc(rc, mysql); + return OK; +} + +#define MDEV19838_MAX_PARAM_COUNT 32 +#define MDEV19838_FIELDS_COUNT 17 + +static int test_mdev19838(MYSQL *mysql) +{ + int rc; + MYSQL_BIND bind[MDEV19838_MAX_PARAM_COUNT]; + unsigned int i, paramCount = 1; + char charvalue[] = "012345678901234567890123456789012345"; + MYSQL_STMT *stmt; + + rc = mysql_query(mysql, "CREATE temporary TABLE mdev19838(" + "f1 char(36)," + "f2 char(36)," + "f3 char(36)," + "f4 char(36)," + "f5 char(36)," + "f6 char(36)," + "f7 char(36)," + "f8 char(36)," + "f9 char(36)," + "f10 char(36)," + "f11 char(36)," + "f12 char(36)," + "f13 char(36)," + "f14 char(36)," + "f15 char(36)," + "f16 char(36)," + "f17 char(36)" + ")"); + check_mysql_rc(rc, mysql); + + stmt = mysql_stmt_init(mysql); + + memset(bind, 0, sizeof(bind)); + + for (i = 0; i < MDEV19838_MAX_PARAM_COUNT; ++i) + { + bind[i].buffer = charvalue; + bind[i].buffer_type = MYSQL_TYPE_STRING; + bind[i].buffer_length = sizeof charvalue; + bind[i].length = &bind[i].length_value; + bind[i].length_value = bind[i].buffer_length - 1; + } + + for (paramCount = 1; paramCount < MDEV19838_FIELDS_COUNT; ++paramCount) + { + mysql_stmt_attr_set(stmt, STMT_ATTR_PREBIND_PARAMS, ¶mCount); + + rc = mysql_stmt_bind_param(stmt, bind); + check_stmt_rc(rc, stmt); + + rc = mariadb_stmt_execute_direct(stmt, "INSERT INTO mdev19838" + "(f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17)" + " VALUES " + "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", -1); + + /* Expecting an error */ + FAIL_UNLESS(rc != 0, "rc!=0"); + + mysql_stmt_close(stmt); + stmt = mysql_stmt_init(mysql); + } + + paramCount = 0; + mysql_stmt_attr_set(stmt, STMT_ATTR_PREBIND_PARAMS, ¶mCount); + rc = mariadb_stmt_execute_direct(stmt, "INSERT INTO mdev19838(f1)" + " VALUES (?)", -1); + /* Expecting an error */ + FAIL_UNLESS(rc != 0, "rc!=0"); + mysql_stmt_close(stmt); + + stmt = mysql_stmt_init(mysql); + /* Correct number of parameters */ + paramCount = MDEV19838_FIELDS_COUNT; + mysql_stmt_attr_set(stmt, STMT_ATTR_PREBIND_PARAMS, ¶mCount); + mysql_stmt_bind_param(stmt, bind); + + rc = mariadb_stmt_execute_direct(stmt, "INSERT INTO mdev19838" + "(f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17)" + " VALUES " + "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", -1); + check_stmt_rc(rc, stmt); + + /* MYSQL_TYPE_TINY = 1. This parameter byte can be read as "parameters send" flag byte. + Checking that wrong packet is still detected */ + bind[0].buffer_type = MYSQL_TYPE_TINY; + bind[0].length_value = 1; + bind[0].buffer_length = 1; + + for (paramCount = 8; paramCount > 0; --paramCount) + { + mysql_stmt_close(stmt); + stmt = mysql_stmt_init(mysql); + + mysql_stmt_attr_set(stmt, STMT_ATTR_PREBIND_PARAMS, ¶mCount); + + rc = mysql_stmt_bind_param(stmt, bind); + + rc = mariadb_stmt_execute_direct(stmt, "INSERT INTO mdev19838" + "(f1, f2, f3, f4, f5, f6, f7, f8, f9)" + " VALUES " + "(?, ?, ?, ?, ?, ?, ?, ?, ?)", -1); + + /* Expecting an error */ + FAIL_UNLESS(rc != 0, "rc"); + } + + /* Test of query w/out parameters, with parameter sent and not sent */ + for (paramCount = MDEV19838_MAX_PARAM_COUNT; paramCount != (unsigned int)-1; --paramCount) + { + mysql_stmt_close(stmt); + stmt = mysql_stmt_init(mysql); + + mysql_stmt_attr_set(stmt, STMT_ATTR_PREBIND_PARAMS, ¶mCount); + + if (paramCount > 0) + { + rc = mysql_stmt_bind_param(stmt, bind); + check_stmt_rc(rc, stmt); + } + + rc = mariadb_stmt_execute_direct(stmt, "INSERT INTO mdev19838" + "(f1)" + " VALUES " + "(0x1111111111111111)", -1); + + /* + We allow junk at the end of the packet in case of + no parameters. So it will succeed. + */ + FAIL_UNLESS(rc == 0, ""); + } + + mysql_stmt_close(stmt); + return OK; +} + struct my_tests_st my_tests[] = { + {"test_mdev19838", test_mdev19838, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, {"test_conc525", test_conc525, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, + {"test_conc566", test_conc566, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, {"test_conc512", test_conc512, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, {"test_conc504", test_conc504, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, {"test_returning", test_returning, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/view.c new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/view.c --- old/mariadb-connector-c-3.2.4-src/unittest/libmariadb/view.c 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/unittest/libmariadb/view.c 2021-11-03 16:35:27.000000000 +0100 @@ -206,7 +206,7 @@ " AENAME,T0001.DEPENDVARS AS DEPENDVARS,T0001.INACTIVE AS " " INACTIVE from LTDX T0001 where (T0001.SRTF2 = 0)"); check_mysql_rc(rc, mysql); - memset(my_bind, '\0', sizeof(MYSQL_BIND)); + memset(my_bind, '\0', 8 * sizeof(MYSQL_BIND)); for (i=0; i < 8; i++) { strcpy(params[i], "1"); my_bind[i].buffer_type = MYSQL_TYPE_VAR_STRING; @@ -257,7 +257,7 @@ check_mysql_rc(rc, mysql); rc= mysql_query(mysql, "CREATE VIEW vt1 AS SELECT a FROM t1"); check_mysql_rc(rc, mysql); - memset(my_bind, '\0', sizeof(MYSQL_BIND)); + memset(my_bind, '\0', 8 * sizeof(MYSQL_BIND)); for (i= 0; i < 2; i++) { sprintf((char *)¶ms[i], "%d", i); my_bind[i].buffer_type = MYSQL_TYPE_VAR_STRING; @@ -438,7 +438,7 @@ memset(my_bind, '\0', sizeof(my_bind)); for (i= 0; i < 11; i++) { - l[i]= 20; + l[i]= 2; my_bind[i].buffer_type= MYSQL_TYPE_STRING; my_bind[i].is_null= 0; my_bind[i].buffer= (char *)&parm[i]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.4-src/win/resource.rc.in new/mariadb-connector-c-3.2.5-src/win/resource.rc.in --- old/mariadb-connector-c-3.2.4-src/win/resource.rc.in 2021-07-28 06:06:11.000000000 +0200 +++ new/mariadb-connector-c-3.2.5-src/win/resource.rc.in 2021-11-03 16:35:27.000000000 +0100 @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,0,0,7 - PRODUCTVERSION 3,0,0,0 + FILEVERSION @MAJOR_FILE_VERSION@,@MINOR_FILE_VERSION@,@PATCH_FILE_VERSION@,@TINY_FILE_VERSION@ + PRODUCTVERSION @MAJOR_FILE_VERSION@,@MINOR_FILE_VERSION@,@PATCH_FILE_VERSION@,@TINY_FILE_VERSION@ FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -15,7 +15,7 @@ BEGIN BLOCK "StringFileInfo" BEGIN - BLOCK "000904b0" + BLOCK "040904B0" BEGIN VALUE "CompanyName", "MariaDB Corporation AB" VALUE "FileDescription", "@FILE_DESCRIPTION@" @@ -28,7 +28,7 @@ END BLOCK "VarFileInfo" BEGIN - VALUE "Translation", 0x9, 1200 + VALUE "Translation", 0x409, 1200 END END