Hello community,
here is the log from the commit of package mariadb-connector-c for
openSUSE:Factory checked in at 2019-12-07 15:19:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mariadb-connector-c (Old)
and /work/SRC/openSUSE:Factory/.mariadb-connector-c.new.4691 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mariadb-connector-c"
Sat Dec 7 15:19:01 2019 rev:21 rq:751755 version:3.1.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/mariadb-connector-c/mariadb-connector-c.changes
2019-09-30 15:51:58.782401305 +0200
+++
/work/SRC/openSUSE:Factory/.mariadb-connector-c.new.4691/mariadb-connector-c.changes
2019-12-07 15:22:36.599735274 +0100
@@ -1,0 +2,10 @@
+Thu Nov 28 16:06:53 UTC 2019 - Kristyna Streitova <[email protected]>
+
+- New upstream version 3.1.5 [bsc#1156669]
+ * MDEV-20469: Plugin dialog could not be loaded (wrong path)
+ * ODBC-440: Fixed typo in sha256_password cmake configuration
+ * CONC-418: For unknown/not handled schannel error codes
+ FormatMessage function will be used instead of returning
+ "Unknown error" message.
+
+-------------------------------------------------------------------
Old:
----
mariadb-connector-c-3.1.4-src.tar.gz
mariadb-connector-c-3.1.4-src.tar.gz.asc
New:
----
mariadb-connector-c-3.1.5-src.tar.gz
mariadb-connector-c-3.1.5-src.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mariadb-connector-c.spec ++++++
--- /var/tmp/diff_new_pack.Rz3RBi/_old 2019-12-07 15:22:37.659735127 +0100
+++ /var/tmp/diff_new_pack.Rz3RBi/_new 2019-12-07 15:22:37.671735126 +0100
@@ -19,13 +19,13 @@
%define sover 3
%define libname libmariadb
# equivalent mariadb version
-%define mariadb_version 10.3.17
+%define mariadb_version 10.3.20
%if ! %{defined _rundir}
%define _rundir %{_localstatedir}/run
%endif
%bcond_with sqlite3
Name: mariadb-connector-c
-Version: 3.1.4
+Version: 3.1.5
Release: 0
Summary: MariaDB connector in C
License: LGPL-2.1-or-later
++++++ mariadb-connector-c-3.1.4-src.tar.gz ->
mariadb-connector-c-3.1.5-src.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mariadb-connector-c-3.1.4-src/CMakeLists.txt
new/mariadb-connector-c-3.1.5-src/CMakeLists.txt
--- old/mariadb-connector-c-3.1.4-src/CMakeLists.txt 2019-09-03
14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/CMakeLists.txt 2019-10-31
06:06:39.000000000 +0100
@@ -36,7 +36,7 @@
SET(CPACK_PACKAGE_VERSION_MAJOR 3)
SET(CPACK_PACKAGE_VERSION_MINOR 1)
-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 +
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mariadb-connector-c-3.1.4-src/cmake/CheckFunctions.cmake
new/mariadb-connector-c-3.1.5-src/cmake/CheckFunctions.cmake
--- old/mariadb-connector-c-3.1.4-src/cmake/CheckFunctions.cmake
2019-09-03 14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/cmake/CheckFunctions.cmake
2019-10-31 06:06:39.000000000 +0100
@@ -21,3 +21,4 @@
CHECK_FUNCTION_EXISTS (nl_langinfo HAVE_NL_LANGINFO)
CHECK_FUNCTION_EXISTS (setlocale HAVE_SETLOCALE)
CHECK_FUNCTION_EXISTS (poll HAVE_POLL)
+CHECK_FUNCTION_EXISTS (getpwuid HAVE_GETPWUID)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mariadb-connector-c-3.1.4-src/include/ma_common.h
new/mariadb-connector-c-3.1.5-src/include/ma_common.h
--- old/mariadb-connector-c-3.1.4-src/include/ma_common.h 2019-09-03
14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/include/ma_common.h 2019-10-31
06:06:39.000000000 +0100
@@ -91,6 +91,7 @@
struct st_mariadb_net_extension {
enum enum_multi_status multi_status;
+ int extended_errno;
};
struct st_mariadb_session_state
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mariadb-connector-c-3.1.4-src/include/mariadb_stmt.h
new/mariadb-connector-c-3.1.5-src/include/mariadb_stmt.h
--- old/mariadb-connector-c-3.1.4-src/include/mariadb_stmt.h 2019-09-03
14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/include/mariadb_stmt.h 2019-10-31
06:06:39.000000000 +0100
@@ -38,7 +38,9 @@
{ \
(a)->last_errno= (b);\
strncpy((a)->sqlstate, (c), SQLSTATE_LENGTH);\
- strncpy((a)->last_error, (d) ? (d) : ER((b)), MYSQL_ERRMSG_SIZE - 1);\
+ (a)->sqlstate[SQLSTATE_LENGTH]= 0;\
+ strncpy((a)->last_error, (d) ? (d) : ER((b)), MYSQL_ERRMSG_SIZE);\
+ (a)->last_error[MYSQL_ERRMSG_SIZE - 1]= 0;\
}
#define CLEAR_CLIENT_STMT_ERROR(a) \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mariadb-connector-c-3.1.4-src/include/mariadb_version.h.in
new/mariadb-connector-c-3.1.5-src/include/mariadb_version.h.in
--- old/mariadb-connector-c-3.1.4-src/include/mariadb_version.h.in
2019-09-03 14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/include/mariadb_version.h.in
2019-10-31 06:06:39.000000000 +0100
@@ -24,7 +24,7 @@
#define MARIADB_PACKAGE_VERSION_ID @MARIADB_PACKAGE_VERSION_ID@
#define MARIADB_SYSTEM_TYPE "@CMAKE_SYSTEM_NAME@"
#define MARIADB_MACHINE_TYPE "@CMAKE_SYSTEM_PROCESSOR@"
-#define MARIADB_PLUGINDIR "@CMAKE_INSTALL_PREFIX@/@PLUGINDIR@"
+#define MARIADB_PLUGINDIR "@CMAKE_INSTALL_PREFIX@/@INSTALL_PLUGINDIR@"
/* mysqld compile time options */
#ifndef MYSQL_CHARSET
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mariadb-connector-c-3.1.4-src/include/mysql.h
new/mariadb-connector-c-3.1.5-src/include/mysql.h
--- old/mariadb-connector-c-3.1.4-src/include/mysql.h 2019-09-03
14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/include/mysql.h 2019-10-31
06:06:39.000000000 +0100
@@ -125,7 +125,9 @@
{ \
(a)->net.last_errno= (b);\
strncpy((a)->net.sqlstate, (c), SQLSTATE_LENGTH);\
+ (a)->net.sqlstate[SQLSTATE_LENGTH]= 0;\
strncpy((a)->net.last_error, (d) ? (d) : ER((b)), MYSQL_ERRMSG_SIZE - 1);\
+ (a)->net.last_error[MYSQL_ERRMSG_SIZE - 1]= 0;\
}
/* For mysql_async.c */
@@ -138,6 +140,7 @@
(a)->net.last_errno= 0;\
strcpy((a)->net.sqlstate, "00000");\
(a)->net.last_error[0]= '\0';\
+ (a)->net.extension->extended_errno= 0;\
}
#define MYSQL_COUNT_ERROR (~(unsigned long long) 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mariadb-connector-c-3.1.4-src/libmariadb/CMakeLists.txt
new/mariadb-connector-c-3.1.5-src/libmariadb/CMakeLists.txt
--- old/mariadb-connector-c-3.1.4-src/libmariadb/CMakeLists.txt 2019-09-03
14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/libmariadb/CMakeLists.txt 2019-10-31
06:06:39.000000000 +0100
@@ -75,8 +75,6 @@
mysql_get_server_version
mysql_get_socket
mysql_get_ssl_cipher
- mysql_get_timeout_value
- mysql_get_timeout_value_ms
mysql_hex_string
mysql_info
mysql_init
@@ -201,8 +199,6 @@
mysql_fetch_row_start
mysql_free_result_cont
mysql_free_result_start
- mysql_get_timeout_value
- mysql_get_timeout_value_ms
mysql_kill_cont
mysql_kill_start
mysql_list_fields_cont
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mariadb-connector-c-3.1.4-src/libmariadb/ma_client_plugin.c.in
new/mariadb-connector-c-3.1.5-src/libmariadb/ma_client_plugin.c.in
--- old/mariadb-connector-c-3.1.4-src/libmariadb/ma_client_plugin.c.in
2019-09-03 14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/libmariadb/ma_client_plugin.c.in
2019-10-31 06:06:39.000000000 +0100
@@ -30,10 +30,8 @@
There is no reference counting and no unloading either.
*/
-#if _MSC_VER
/* Silence warnings about variable 'unused' being used. */
#define FORCE_INIT_OF_VARS 1
-#endif
#include <ma_global.h>
#include <ma_sys.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mariadb-connector-c-3.1.4-src/libmariadb/mariadb_lib.c
new/mariadb-connector-c-3.1.5-src/libmariadb/mariadb_lib.c
--- old/mariadb-connector-c-3.1.4-src/libmariadb/mariadb_lib.c 2019-09-03
14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/libmariadb/mariadb_lib.c 2019-10-31
06:06:39.000000000 +0100
@@ -1020,7 +1020,7 @@
mysql->charset= mysql_find_charset_name(MARIADB_DEFAULT_CHARSET);
mysql->methods= &MARIADB_DEFAULT_METHODS;
strcpy(mysql->net.sqlstate, "00000");
- mysql->net.last_error[0]= mysql->net.last_errno= 0;
+ mysql->net.last_error[0]= mysql->net.last_errno=
mysql->net.extension->extended_errno= 0;
if (ENABLED_LOCAL_INFILE != LOCAL_INFILE_MODE_OFF)
mysql->options.client_flag|= CLIENT_LOCAL_FILES;
@@ -1199,9 +1199,42 @@
return my;
}
}
-
+#ifndef HAVE_SCHANNEL
return mysql->methods->db_connect(mysql, host, user, passwd,
db, port, unix_socket, client_flag);
+#else
+/*
+ With older windows versions (prior Win 10) TLS connections periodically
+ fail with SEC_E_INVALID_TOKEN, SEC_E_BUFFER_TOO_SMALL or
SEC_E_MESSAGE_ALTERED
+ error (see MDEV-13492). If the connect attempt returns on of these error
codes
+ in mysql->net.extended_errno we will try to connect again (max. 3 times)
+*/
+#define MAX_SCHANNEL_CONNECT_ATTEMPTS 3
+ {
+ int ssl_retry= (mysql->options.use_ssl) ? MAX_SCHANNEL_CONNECT_ATTEMPTS :
1;
+ MYSQL *my= NULL;
+ while (ssl_retry)
+ {
+ if ((my= mysql->methods->db_connect(mysql, host, user, passwd,
+ db, port, unix_socket, client_flag |
CLIENT_REMEMBER_OPTIONS)))
+ return my;
+
+ switch (mysql->net.extension->extended_errno) {
+ case SEC_E_INVALID_TOKEN:
+ case SEC_E_BUFFER_TOO_SMALL:
+ case SEC_E_MESSAGE_ALTERED:
+ ssl_retry--;
+ break;
+ default:
+ ssl_retry= 0;
+ break;
+ }
+ }
+ if (!my && !(client_flag & CLIENT_REMEMBER_OPTIONS))
+ mysql_close_options(mysql);
+ return my;
+ }
+#endif
}
MYSQL *mthd_my_real_connect(MYSQL *mysql, const char *host, const char *user,
@@ -3757,7 +3790,7 @@
#ifdef HAVE_TLS
*((const char **)arg)= tls_library_version;
#else
- *((char **)arg)= "Off";
+ *((const char **)arg)= "Off";
#endif
break;
case MARIADB_CLIENT_VERSION:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mariadb-connector-c-3.1.4-src/libmariadb/secure/ma_schannel.c
new/mariadb-connector-c-3.1.5-src/libmariadb/secure/ma_schannel.c
--- old/mariadb-connector-c-3.1.4-src/libmariadb/secure/ma_schannel.c
2019-09-03 14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/libmariadb/secure/ma_schannel.c
2019-10-31 06:06:39.000000000 +0100
@@ -26,12 +26,16 @@
#define MAX_SSL_ERR_LEN 100
#define SCHANNEL_PAYLOAD(A) (A).cbMaximumMessage + (A).cbHeader + (A).cbTrailer
-void ma_schannel_set_win_error(MARIADB_PVIO *pvio);
+void ma_schannel_set_win_error(MARIADB_PVIO *pvio, DWORD ErrorNo
__attribute__((unused)));
/* {{{ void ma_schannel_set_sec_error */
void ma_schannel_set_sec_error(MARIADB_PVIO *pvio, DWORD ErrorNo)
{
MYSQL *mysql= pvio->mysql;
+
+ if (ErrorNo != SEC_E_OK)
+ mysql->net.extension->extended_errno= ErrorNo;
+
switch(ErrorNo) {
case SEC_E_ILLEGAL_MESSAGE:
pvio->set_error(mysql, CR_SSL_CONNECTION_ERROR, SQLSTATE_UNKNOWN, "SSL
connection error: The message received was unexpected or badly formatted");
@@ -73,20 +77,20 @@
break;
case SEC_E_INTERNAL_ERROR:
if (GetLastError())
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
else
pvio->set_error(mysql, CR_SSL_CONNECTION_ERROR, SQLSTATE_UNKNOWN, "The
Local Security Authority cannot be contacted");
break;
default:
- pvio->set_error(mysql, CR_SSL_CONNECTION_ERROR, SQLSTATE_UNKNOWN, "Unknown
SSL error (0x%x)", ErrorNo);
+ ma_schannel_set_win_error(pvio, ErrorNo);
}
}
/* }}} */
/* {{{ void ma_schnnel_set_win_error */
-void ma_schannel_set_win_error(MARIADB_PVIO *pvio)
+void ma_schannel_set_win_error(MARIADB_PVIO *pvio, DWORD ErrorNo
__attribute__((unused)))
{
- ulong ssl_errno= GetLastError();
+ ulong ssl_errno= ErrorNo ? ErrorNo : GetLastError();
char *ssl_error_reason= NULL;
char *p;
char buffer[256];
@@ -146,7 +150,7 @@
if ((hfile= CreateFile(PemFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL )) ==
INVALID_HANDLE_VALUE)
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
return NULL;
}
@@ -164,7 +168,7 @@
if (!ReadFile(hfile, buffer, *buffer_len, &dwBytesRead, NULL))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto end;
}
@@ -174,7 +178,7 @@
if (!CryptStringToBinaryA(buffer, *buffer_len, CRYPT_STRING_BASE64HEADER,
NULL, &der_buffer_length, NULL, NULL))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto end;
}
/* allocate DER binary buffer */
@@ -187,7 +191,7 @@
if (!CryptStringToBinaryA(buffer, *buffer_len, CRYPT_STRING_BASE64HEADER,
der_buffer, &der_buffer_length, NULL, NULL))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto end;
}
@@ -217,7 +221,7 @@
if ((hfile = CreateFile(PemFile, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE)
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
return NULL;
}
@@ -235,7 +239,7 @@
if (!ReadFile(hfile, buffer, *buffer_len, &dwBytesRead, NULL))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto end;
}
@@ -262,7 +266,7 @@
if (!CryptStringToBinaryA(buffer, buffer_len, CRYPT_STRING_BASE64HEADER,
NULL, der_len, NULL, NULL))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto end;
}
/* allocate DER binary buffer */
@@ -275,7 +279,7 @@
if (!CryptStringToBinaryA(buffer, buffer_len, CRYPT_STRING_BASE64HEADER,
der_buffer, der_len, NULL, NULL))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto end;
}
return der_buffer;
@@ -350,7 +354,7 @@
if (!(ctx->client_cert_ctx =
(CERT_CONTEXT*)CertCreateCertificateContext(X509_ASN_ENCODING |
PKCS_7_ASN_ENCODING,
der_buffer, der_buffer_length)))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto error;
}
}
@@ -429,7 +433,7 @@
goto end;
if (!(ctx= (CERT_CONTEXT *)CertCreateCertificateContext(X509_ASN_ENCODING |
PKCS_7_ASN_ENCODING,
der_buffer, der_buffer_length)))
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
end:
if (der_buffer)
@@ -468,7 +472,7 @@
goto end;
if (!(ctx= CertCreateCRLContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
der_buffer, der_buffer_length)))
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
end:
if (der_buffer)
free(der_buffer);
@@ -518,7 +522,7 @@
0, NULL,
NULL, &priv_key_len))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto end;
}
@@ -535,20 +539,20 @@
0, NULL,
priv_key, &priv_key_len))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto end;
}
/* Acquire context */
if (!CryptAcquireContext(&crypt_prov, NULL, MS_ENHANCED_PROV,
PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto end;
}
/* ... and import the private key */
if (!CryptImportKey(crypt_prov, priv_key, priv_key_len, 0, 0, (HCRYPTKEY
*)&crypt_key))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto end;
}
@@ -560,7 +564,7 @@
if (CertSetCertificateContextProperty(ctx->client_cert_ctx,
CERT_KEY_CONTEXT_PROP_ID, 0, &kpi))
rc= 1;
else
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
end:
if (ctx->der_key)
@@ -1043,7 +1047,7 @@
DWORD flags = CERT_STORE_SIGNATURE_FLAG | CERT_STORE_TIME_VALIDITY_FLAG;
if (!CertVerifySubjectCertificateContext(pServerCert, ca_ctx, &flags))
{
- ma_schannel_set_win_error(pvio);
+ ma_schannel_set_win_error(pvio, 0);
goto end;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mariadb-connector-c-3.1.4-src/plugins/auth/CMakeLists.txt
new/mariadb-connector-c-3.1.5-src/plugins/auth/CMakeLists.txt
--- old/mariadb-connector-c-3.1.4-src/plugins/auth/CMakeLists.txt
2019-09-03 14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/plugins/auth/CMakeLists.txt
2019-10-31 06:06:39.000000000 +0100
@@ -83,7 +83,7 @@
CONFIGURATIONS DYNAMIC STATIC OFF
DEFAULT DYNAMIC
SOURCES ${AUTH_DIR}/sha256_pw.c
- LIBRARIES ${CRYT_LIBS})
+ LIBRARIES ${CRYPT_LIBS})
ENDIF()
ENDIF()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mariadb-connector-c-3.1.4-src/plugins/auth/caching_sha2_pw.c
new/mariadb-connector-c-3.1.5-src/plugins/auth/caching_sha2_pw.c
--- old/mariadb-connector-c-3.1.4-src/plugins/auth/caching_sha2_pw.c
2019-09-03 14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/plugins/auth/caching_sha2_pw.c
2019-10-31 06:06:39.000000000 +0100
@@ -275,14 +275,6 @@
memmove(mysql->scramble_buff, packet, SCRAMBLE_LENGTH);
mysql->scramble_buff[SCRAMBLE_LENGTH]= 0;
- /* if a tls session is active we need to send plain password */
- if (mysql->client_flag & CLIENT_SSL)
- {
- if (vio->write_packet(vio, (unsigned char *)mysql->passwd,
(int)strlen(mysql->passwd) + 1))
- return CR_ERROR;
- return CR_OK;
- }
-
/* send empty packet if no password was provided */
if (!mysql->passwd || !mysql->passwd[0])
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mariadb-connector-c-3.1.4-src/plugins/auth/gssapi_errmsg.c
new/mariadb-connector-c-3.1.5-src/plugins/auth/gssapi_errmsg.c
--- old/mariadb-connector-c-3.1.4-src/plugins/auth/gssapi_errmsg.c
2019-09-03 14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/plugins/auth/gssapi_errmsg.c
2019-10-31 06:06:39.000000000 +0100
@@ -26,7 +26,7 @@
POSSIBILITY OF SUCH DAMAGE.
*/
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(SOLARIS) || defined(__sun)
#include <gssapi/gssapi.h>
#else
#include <gssapi.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mariadb-connector-c-3.1.4-src/unittest/libmariadb/connection.c
new/mariadb-connector-c-3.1.5-src/unittest/libmariadb/connection.c
--- old/mariadb-connector-c-3.1.4-src/unittest/libmariadb/connection.c
2019-09-03 14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/unittest/libmariadb/connection.c
2019-10-31 06:06:39.000000000 +0100
@@ -1684,8 +1684,54 @@
return OK;
}
+static int test_conc443(MYSQL *my __attribute__((unused)))
+{
+ my_bool x= 1;
+ unsigned long thread_id= 0;
+ char query[128];
+ MYSQL_RES *result;
+ MYSQL_ROW row;
+ int rc;
+
+ MYSQL *mysql= mysql_init(NULL);
+ mysql_options(mysql, MYSQL_INIT_COMMAND, "set @a:=3");
+ mysql_options(mysql, MYSQL_OPT_RECONNECT, &x);
+
+ if (!mysql_real_connect(mysql, hostname, username, password, schema, port,
socketname, CLIENT_REMEMBER_OPTIONS))
+ {
+ diag("Connection failed. Error: %s", mysql_error(mysql));
+ mysql_close(mysql);
+ }
+
+ thread_id= mysql_thread_id(mysql);
+
+ sprintf(query, "KILL %lu", thread_id);
+ rc= mysql_query(mysql, query);
+
+ sleep(3);
+
+ rc= mysql_ping(mysql);
+ check_mysql_rc(rc, mysql);
+
+ rc= mysql_query(mysql, "SELECT @a");
+ check_mysql_rc(rc, mysql);
+
+ FAIL_IF(mysql_thread_id(mysql) == thread_id, "Expected different thread id");
+
+ result= mysql_store_result(mysql);
+ if (!result)
+ return FAIL;
+ row= mysql_fetch_row(result);
+ FAIL_IF(strcmp(row[0],"3"), "Wrong result");
+
+ mysql_free_result(result);
+ mysql_close(mysql);
+
+ return OK;
+}
struct my_tests_st my_tests[] = {
+ {"test_conc443", test_conc443, TEST_CONNECTION_NONE, 0, NULL, NULL},
{"test_conc366", test_conc366, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
{"test_conc392", test_conc392, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
{"test_conc312", test_conc312, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mariadb-connector-c-3.1.4-src/unittest/libmariadb/ps_bugs.c
new/mariadb-connector-c-3.1.5-src/unittest/libmariadb/ps_bugs.c
--- old/mariadb-connector-c-3.1.4-src/unittest/libmariadb/ps_bugs.c
2019-09-03 14:48:10.000000000 +0200
+++ new/mariadb-connector-c-3.1.5-src/unittest/libmariadb/ps_bugs.c
2019-10-31 06:06:39.000000000 +0100
@@ -5112,7 +5112,57 @@
return OK;
}
+static int test_maxparam(MYSQL *mysql)
+{
+ const char *query= "INSERT INTO t1 VALUES (?)";
+ int rc;
+ char *buffer;
+ int i;
+ int val= 1;
+ size_t mem= strlen(query) + 1 + 4 * 65535 + 1;
+ MYSQL_STMT *stmt= mysql_stmt_init(mysql);
+ MYSQL_BIND bind[65535];
+
+ rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1");
+ check_mysql_rc(rc, mysql);
+
+ rc= mysql_query(mysql, "CREATE TABLE t1 (a int)");
+ check_mysql_rc(rc, mysql);
+
+ buffer= calloc(1, mem);
+ strcpy(buffer, query);
+ for (i=0; i < 65534.; i++)
+ strcat(buffer, ",(?)");
+ rc= mysql_stmt_prepare(stmt, SL(buffer));
+ check_stmt_rc(rc, stmt);
+
+ memset(bind, 0, sizeof(MYSQL_BIND) * 65535);
+ for (i=0; i < 65534; i++)
+ {
+ bind[i].buffer_type= MYSQL_TYPE_LONG;
+ bind[i].buffer= &val;
+ }
+
+ rc= mysql_stmt_bind_param(stmt, bind);
+ check_stmt_rc(rc, stmt);
+
+ rc= mysql_stmt_execute(stmt);
+ check_stmt_rc(rc, stmt);
+
+ FAIL_IF(mysql_stmt_affected_rows(stmt) != 65535, "Expected
affected_rows=65535");
+
+ strcat(buffer, ",(?)");
+ rc= mysql_stmt_prepare(stmt, SL(buffer));
+ free(buffer);
+ FAIL_IF(!rc, "Error expected");
+ FAIL_IF(mysql_stmt_errno(stmt) != ER_PS_MANY_PARAM, "Expected
ER_PS_MANY_PARAM error");
+
+ mysql_stmt_close(stmt);
+ return OK;
+}
+
struct my_tests_st my_tests[] = {
+ {"test_maxparam", test_maxparam, TEST_CONNECTION_NEW, 0, NULL, NULL},
{"test_conc424", test_conc424, TEST_CONNECTION_NEW, 0, NULL, NULL},
{"test_conc344", test_conc344, TEST_CONNECTION_NEW, 0, NULL, NULL},
{"test_conc334", test_conc334, TEST_CONNECTION_NEW, 0, NULL, NULL},