diff options
author | Sergei Golubchik <serg@mariadb.com> | 2019-04-16 09:33:02 +0530 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2019-07-24 18:32:24 +0200 |
commit | 5e8ab9b7af159cee6e954f62b6304c2c33b6f6e2 (patch) | |
tree | 9acfc6bf56e99888e06648b762186b3248247ac2 | |
parent | c5e967430059212a06b1e3764030f704ca910393 (diff) | |
download | mariadb-git-5e8ab9b7af159cee6e954f62b6304c2c33b6f6e2.tar.gz |
Bug#27302459: EMPTY VALUE IN MYSQL.PLUGIN TABLE CAUSES SERVER TO EXIT ON STARTUP
Description:- During server startup, the server exits if
the 'mysql.plugin' system table has any rows with empty
value for the field 'name' (plugin name).
-rw-r--r-- | mysql-test/r/plugin.result | 2 | ||||
-rw-r--r-- | mysql-test/t/plugin.test | 6 | ||||
-rw-r--r-- | sql/sql_plugin.cc | 3 |
3 files changed, 11 insertions, 0 deletions
diff --git a/mysql-test/r/plugin.result b/mysql-test/r/plugin.result index 4fb4986d0fd..68ee682e562 100644 --- a/mysql-test/r/plugin.result +++ b/mysql-test/r/plugin.result @@ -277,3 +277,5 @@ UNUSABLE uninstall soname 'ha_example'; select plugin_name from information_schema.plugins where plugin_library like 'ha_example%'; plugin_name +insert mysql.plugin values (); +delete from mysql.plugin where name = ''; diff --git a/mysql-test/t/plugin.test b/mysql-test/t/plugin.test index c61a9239218..0cb25c6249d 100644 --- a/mysql-test/t/plugin.test +++ b/mysql-test/t/plugin.test @@ -224,3 +224,9 @@ select plugin_name from information_schema.plugins where plugin_library like 'ha uninstall soname 'ha_example'; select plugin_name from information_schema.plugins where plugin_library like 'ha_example%'; +# +# Bug#27302459: EMPTY VALUE IN MYSQL.PLUGIN TABLE CAUSES SERVER TO EXIT ON STARTUP +# +insert mysql.plugin values (); +source include/restart_mysqld.inc; +delete from mysql.plugin where name = ''; diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index 46df991639e..91d0a4393c5 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -1781,6 +1781,9 @@ static void plugin_load(MEM_ROOT *tmp_root) LEX_STRING name= {(char *)str_name.ptr(), str_name.length()}; LEX_STRING dl= {(char *)str_dl.ptr(), str_dl.length()}; + if (!name.length || !dl.length) + continue; + /* there're no other threads running yet, so we don't need a mutex. but plugin_add() before is designed to work in multi-threaded |