Skip to content

Commit f7adc4a

Browse files
committed
A bit more safety
1 parent 0ec641e commit f7adc4a

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

sql/sys_vars.ic

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,10 @@ public:
501501
String str2(buff2, sizeof(buff2), charset), *res;
502502

503503
if (!(res=var->value->val_str(&str)))
504+
{
504505
var->save_result.string_value.str= 0;
506+
var->save_result.string_value.length= 0; // safety
507+
}
505508
else
506509
{
507510
uint32 unused;
@@ -895,9 +898,16 @@ public:
895898
String str(buff, sizeof(buff), system_charset_info), *res;
896899

897900
if (!(res=var->value->val_str(&str)))
901+
{
898902
var->save_result.string_value.str= const_cast<char*>("");
903+
var->save_result.string_value.length= 0;
904+
}
899905
else
900-
var->save_result.string_value.str= thd->strmake(res->ptr(), res->length());
906+
{
907+
size_t len= res->length();
908+
var->save_result.string_value.str= thd->strmake(res->ptr(), len);
909+
var->save_result.string_value.length= len;
910+
}
901911
return false;
902912
}
903913
bool session_update(THD *thd, set_var *var)
@@ -921,6 +931,7 @@ public:
921931
{
922932
char *ptr= (char*)(intptr)option.def_value;
923933
var->save_result.string_value.str= ptr;
934+
var->save_result.string_value.length= safe_strlen(ptr);
924935
}
925936
uchar *session_value_ptr(THD *thd, const LEX_CSTRING *base)
926937
{

0 commit comments

Comments
 (0)