Commit b6595704 authored by unknown's avatar unknown

Bug#34726: open_tables() crashes server if running with --debug

The DBUG code emits the current value of the proc_info member of THD,
which may be set to NULL.  It was wrong to dereference that value
with the format string %s without verifying that it was valid.

Now, insert an inline test that substitutes the string "(null)" for
NULL pointers.


sql/sql_class.cc:
  Dereferencing a NULL is illegal (though not fatal for %s on some 
  platforms), and we have no assurance that the caller didn't call us 
  with a valid string.
parent 6262c056
...@@ -253,7 +253,8 @@ const char *set_thd_proc_info(THD *thd, const char *info, ...@@ -253,7 +253,8 @@ const char *set_thd_proc_info(THD *thd, const char *info,
const unsigned int calling_line) const unsigned int calling_line)
{ {
const char *old_info= thd->proc_info; const char *old_info= thd->proc_info;
DBUG_PRINT("proc_info", ("%s:%d %s", calling_file, calling_line, info)); DBUG_PRINT("proc_info", ("%s:%d %s", calling_file, calling_line,
(info != NULL) ? info : "(null)"));
#if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER) #if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER)
thd->profiling.status_change(info, calling_function, calling_file, calling_line); thd->profiling.status_change(info, calling_function, calling_file, calling_line);
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment