Bug #47645: Segmentation fault when out of memory during handlerton initialization

There is a missing check for memory allocation failure when allocating
memory for the handlerton structure. If the handlerton init function
tries to de-reference the pointer, it will cause a segmentation fault
and crash the server.

This patch fixes the problem by not calling the init function if memory
allocation failed, and instead prints an informative error message and
reports the error to the caller.
This commit is contained in:
Mats Kindahl 2009-09-25 11:47:15 +02:00
parent 4ad8ef0602
commit 14cf09c12a

View File

@ -430,6 +430,14 @@ int ha_initialize_handlerton(st_plugin_int *plugin)
hton= (handlerton *)my_malloc(sizeof(handlerton),
MYF(MY_WME | MY_ZEROFILL));
if (hton == NULL)
{
sql_print_error("Unable to allocate memory for plugin '%s' handlerton.",
plugin->name.str);
goto err_no_hton_memory;
}
/* Historical Requirement */
plugin->data= hton; // shortcut for the future
if (plugin->plugin->init && plugin->plugin->init(hton))
@ -540,6 +548,7 @@ err_deinit:
err:
my_free((uchar*) hton, MYF(0));
err_no_hton_memory:
plugin->data= NULL;
DBUG_RETURN(1);
}