summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2020-07-22 10:30:00 +0200
committerOleksandr Byelkin <sanja@mariadb.com>2020-07-22 11:50:23 +0200
commit61350b3fb8d5f3f63d920210315924ce27e946c9 (patch)
tree450263c81aad2fd6b19a2237f0010c4db0799801
parentabf9d24749604762dbc6920fe84e9dbd9afb89e4 (diff)
downloadmariadb-git-bb-10.3-MDEV-22134.tar.gz
A bit more safetybb-10.3-MDEV-22134
-rw-r--r--sql/sys_vars.ic13
1 files changed, 12 insertions, 1 deletions
diff --git a/sql/sys_vars.ic b/sql/sys_vars.ic
index ec8d9ef201a..860502c40e3 100644
--- a/sql/sys_vars.ic
+++ b/sql/sys_vars.ic
@@ -501,7 +501,10 @@ public:
String str2(buff2, sizeof(buff2), charset), *res;
if (!(res=var->value->val_str(&str)))
+ {
var->save_result.string_value.str= 0;
+ var->save_result.string_value.length= 0; // safety
+ }
else
{
uint32 unused;
@@ -895,9 +898,16 @@ public:
String str(buff, sizeof(buff), system_charset_info), *res;
if (!(res=var->value->val_str(&str)))
+ {
var->save_result.string_value.str= const_cast<char*>("");
+ var->save_result.string_value.length= 0;
+ }
else
- var->save_result.string_value.str= thd->strmake(res->ptr(), res->length());
+ {
+ size_t len= res->length();
+ var->save_result.string_value.str= thd->strmake(res->ptr(), len);
+ var->save_result.string_value.length= len;
+ }
return false;
}
bool session_update(THD *thd, set_var *var)
@@ -921,6 +931,7 @@ public:
{
char *ptr= (char*)(intptr)option.def_value;
var->save_result.string_value.str= ptr;
+ var->save_result.string_value.length= safe_strlen(ptr);
}
uchar *session_value_ptr(THD *thd, const LEX_CSTRING *base)
{