diff options
author | Sergei Golubchik <sergii@pisem.net> | 2013-01-09 17:29:51 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2013-01-09 17:29:51 +0100 |
commit | c9ff25f568df9112cb581348e865c79d8d663b4a (patch) | |
tree | 3bb9cebe9c7df365eb22208692dd3d892c6c481c /sql/sql_plugin.cc | |
parent | a128c50ac1b0d93f804aee98066588183c347607 (diff) | |
download | mariadb-git-c9ff25f568df9112cb581348e865c79d8d663b4a.tar.gz |
MDEV-3985 crash: uninstall soname 'a'
Diffstat (limited to 'sql/sql_plugin.cc')
-rw-r--r-- | sql/sql_plugin.cc | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index dee48a28037..3d529c7a332 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -1,6 +1,6 @@ /* Copyright (c) 2005, 2012, Oracle and/or its affiliates. - Copyright (c) 2010, 2011, Monty Program Ab + Copyright (c) 2010, 2013, Monty Program Ab This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -2260,11 +2260,19 @@ bool mysql_uninstall_plugin(THD *thd, const LEX_STRING *name, { fix_dl_name(thd->mem_root, &dl); st_plugin_dl *plugin_dl= plugin_dl_find(&dl); - struct st_maria_plugin *plugin; - for (plugin= plugin_dl->plugins; plugin->info; plugin++) + if (plugin_dl) { - LEX_STRING str= { const_cast<char*>(plugin->name), strlen(plugin->name) }; - error|= do_uninstall(thd, table, &str); + for (struct st_maria_plugin *plugin= plugin_dl->plugins; + plugin->info; plugin++) + { + LEX_STRING str= { const_cast<char*>(plugin->name), strlen(plugin->name) }; + error|= do_uninstall(thd, table, &str); + } + } + else + { + my_error(ER_SP_DOES_NOT_EXIST, MYF(0), "SONAME", dl.str); + error= true; } } reap_plugins(); |