summaryrefslogtreecommitdiff
path: root/sql/sql_show.cc
diff options
context:
space:
mode:
authorramil/ram@mysql.com/ramil.myoffice.izhnet.ru <>2007-05-23 12:15:47 +0500
committerramil/ram@mysql.com/ramil.myoffice.izhnet.ru <>2007-05-23 12:15:47 +0500
commit794100ce7ee73ec306756ed71d87c3196a8f5f42 (patch)
tree36982e9f78b65b56a96e11dc0522a855d56984a3 /sql/sql_show.cc
parent6ddf4785bbbcbb84930d4f461e1d249e1833bece (diff)
downloadmariadb-git-794100ce7ee73ec306756ed71d87c3196a8f5f42.tar.gz
Fix for bug #23810: Server crashes on various "show status ..." commands
We access some variable values using casts like *(long *) buff that may cause crashes on some platforms (e.g. solaris 64) if buff is not properly aligned. Fix: align the buffer used.
Diffstat (limited to 'sql/sql_show.cc')
-rw-r--r--sql/sql_show.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index e8107248c14..65506860e09 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -2035,7 +2035,9 @@ static bool show_status_array(THD *thd, const char *wild,
const char *prefix, TABLE *table,
bool ucase_names)
{
- char buff[SHOW_VAR_FUNC_BUFF_SIZE], *prefix_end;
+ MY_ALIGNED_BYTE_ARRAY(buff_data, SHOW_VAR_FUNC_BUFF_SIZE, long);
+ char * const buff= (char *) &buff_data;
+ char *prefix_end;
/* the variable name should not be longer than 64 characters */
char name_buffer[64];
int len;