From db56fd008c118246a0ee92c2949b3502fbe324ba Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Wed, 9 Jul 2008 16:52:26 +0500 Subject: [PATCH] Fix for bug#37669: Server crash by setting "@@session.innodb_table_locks" Problem: reading/writing data from/to an address without proper alignment leads to SIGBUS on some platforms. Fix: use the correct data type when dereferencing variable values. --- sql/sql_plugin.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index 0fe79a8945d..b9733f2eec0 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -1882,7 +1882,7 @@ static int check_func_bool(THD *thd, struct st_mysql_sys_var *var, } result= (int) tmp; } - *(int*)save= -result; + *(my_bool *) save= -result; return 0; err: my_error(ER_WRONG_VALUE_FOR_VAR, MYF(0), var->name, strvalue); @@ -2063,7 +2063,7 @@ err: static void update_func_bool(THD *thd, struct st_mysql_sys_var *var, void *tgt, const void *save) { - *(my_bool *) tgt= *(int *) save ? 1 : 0; + *(my_bool *) tgt= *(my_bool *) save ? TRUE : FALSE; }