Browse Source

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:
  Fix for bug#37669: Server crash by setting "@@session.innodb_table_locks"
  
  Use *(my_bool *) typecast to avoid misaligned reading/writing and 
  to get/set proper boolean values.
pull/374/head
Ramil Kalimullin 18 years ago
parent
commit
d59b371305
  1. 4
      sql/sql_plugin.cc

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

Loading…
Cancel
Save