summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty <monty@mariadb.org>2020-03-17 12:37:56 +0200
committerMonty <monty@mariadb.org>2020-03-17 12:37:56 +0200
commit517f659e6d5eeb7e01bf19ef8b782bc2619831d4 (patch)
tree5e3c9aba88ccf22257bda48d3d2cd2e80b7eafc3
parenta2d24def8cc42d27c72d833abfb39ef24a2b96ba (diff)
downloadmariadb-git-517f659e6d5eeb7e01bf19ef8b782bc2619831d4.tar.gz
Fixed that caused failure in --ps binlog_encryption.rpl_gtid_basic
Problem was that replace_dynstr_append_mem() assumed strings are null terminated which is not always the case.
-rw-r--r--client/mysqltest.cc7
-rw-r--r--sql/sql_class.cc3
2 files changed, 7 insertions, 3 deletions
diff --git a/client/mysqltest.cc b/client/mysqltest.cc
index bb59e5fd42f..4cda66ab087 100644
--- a/client/mysqltest.cc
+++ b/client/mysqltest.cc
@@ -11145,13 +11145,16 @@ void replace_dynstr_append_mem(DYNAMIC_STRING *ds, const char *val, size_t len)
{
/* Convert to lower case, and do this first */
char *c= lower;
- for (const char *v= val; *v; v++)
+ for (const char *v= val, *end_v= v + len; v < end_v; v++)
*c++= my_tolower(charset_info, *v);
*c= '\0';
/* Copy from this buffer instead */
}
else
- memcpy(lower, val, len+1);
+ {
+ memcpy(lower, val, len);
+ lower[len]= 0;
+ }
fix_win_paths(lower, len);
val= lower;
}
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 427c9a591fa..22690c7e432 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -3002,7 +3002,8 @@ int select_send::send_data(List<Item> &items)
thd->inc_sent_row_count(1);
- if (thd->vio_ok())
+ /* Don't return error if disconnected, only if write fails */
+ if (likely(thd->vio_ok()))
DBUG_RETURN(protocol->write());
DBUG_RETURN(0);