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.
This commit is contained in:
Monty 2020-03-17 12:37:56 +02:00
parent a2d24def8c
commit 517f659e6d
2 changed files with 7 additions and 3 deletions

View file

@ -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;
}

View file

@ -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);