From eadd87880887e6ca73e6f292c9d856df7e56c3c0 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Fri, 8 Oct 2021 20:44:38 +0400 Subject: MDEV-23269 SIGSEGV in ft_boolean_check_syntax_string on setting ft_boolean_syntax The crash happened because my_isalnum() does not support character sets with mbminlen>1. The value of "ft_boolean_syntax" is converted to utf8 in do_string_check(). So calling my_isalnum() is combination with "default_charset_info" was wrong. Adding new parameters (size_t length, CHARSET_INFO *cs) to ft_boolean_check_syntax_string() and passing self->charset(thd) as the character set. --- sql/sys_vars.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'sql/sys_vars.cc') diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index e4de3d8d0aa..f231f49a667 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -1022,7 +1022,9 @@ static Sys_var_ulong Sys_flush_time( static bool check_ftb_syntax(sys_var *self, THD *thd, set_var *var) { return ft_boolean_check_syntax_string((uchar*) - (var->save_result.string_value.str)); + (var->save_result.string_value.str), + var->save_result.string_value.length, + self->charset(thd)); } static bool query_cache_flush(sys_var *self, THD *thd, enum_var_type type) { -- cgit v1.2.1