mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug#27167197 USING ? IN INSTALL PLUGIN QUERY ABORTS DEBUG, AND HANGS OPTIMIZED SERVER
check_valid_path() uses my_strcspn() that cannot handle invalid characters properly. This is fixed by a big refactoring in 10.2 (MDEV-6353). For 5.5, let's simply swap tests, because check_string_char_length() rejects invalid characters just fine.
This commit is contained in:
@ -277,5 +277,13 @@ UNUSABLE
|
|||||||
uninstall soname 'ha_example';
|
uninstall soname 'ha_example';
|
||||||
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
|
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
|
||||||
plugin_name
|
plugin_name
|
||||||
|
set names utf8;
|
||||||
|
select convert('admin𝌆' using utf8);
|
||||||
|
convert('admin𝌆' using utf8)
|
||||||
|
admin
|
||||||
|
Warnings:
|
||||||
|
Warning 1300 Invalid utf8 character string: 'F09D8C'
|
||||||
|
install plugin foo soname 'admin𝌆';
|
||||||
|
ERROR HY000: No paths allowed for shared library
|
||||||
insert mysql.plugin values ();
|
insert mysql.plugin values ();
|
||||||
delete from mysql.plugin where name = '';
|
delete from mysql.plugin where name = '';
|
||||||
|
@ -224,9 +224,18 @@ select plugin_name from information_schema.plugins where plugin_library like 'ha
|
|||||||
uninstall soname 'ha_example';
|
uninstall soname 'ha_example';
|
||||||
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
|
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
|
||||||
|
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
set names utf8;
|
||||||
|
select convert('admin𝌆' using utf8);
|
||||||
|
--error ER_UDF_NO_PATHS
|
||||||
|
install plugin foo soname 'admin𝌆';
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug#27302459: EMPTY VALUE IN MYSQL.PLUGIN TABLE CAUSES SERVER TO EXIT ON STARTUP
|
# Bug#27302459: EMPTY VALUE IN MYSQL.PLUGIN TABLE CAUSES SERVER TO EXIT ON STARTUP
|
||||||
#
|
#
|
||||||
insert mysql.plugin values ();
|
insert mysql.plugin values ();
|
||||||
source include/restart_mysqld.inc;
|
source include/restart_mysqld.inc;
|
||||||
delete from mysql.plugin where name = '';
|
delete from mysql.plugin where name = '';
|
||||||
|
|
||||||
|
@ -736,9 +736,9 @@ static st_plugin_dl *plugin_dl_add(const LEX_STRING *dl, int report)
|
|||||||
This is done to ensure that only approved libraries from the
|
This is done to ensure that only approved libraries from the
|
||||||
plugin directory are used (to make this even remotely secure).
|
plugin directory are used (to make this even remotely secure).
|
||||||
*/
|
*/
|
||||||
if (check_valid_path(dl->str, dl->length) ||
|
if (check_string_char_length((LEX_STRING *) dl, "", NAME_CHAR_LEN,
|
||||||
check_string_char_length((LEX_STRING *) dl, "", NAME_CHAR_LEN,
|
|
||||||
system_charset_info, 1) ||
|
system_charset_info, 1) ||
|
||||||
|
check_valid_path(dl->str, dl->length) ||
|
||||||
plugin_dir_len + dl->length + 1 >= FN_REFLEN)
|
plugin_dir_len + dl->length + 1 >= FN_REFLEN)
|
||||||
{
|
{
|
||||||
report_error(report, ER_UDF_NO_PATHS);
|
report_error(report, ER_UDF_NO_PATHS);
|
||||||
|
Reference in New Issue
Block a user