1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-9969 mysql_install_db error processing ignore_db_dirs.

Check for same directories in the list added.
This commit is contained in:
Alexey Botchkov
2016-06-16 12:35:14 +04:00
parent 732e269405
commit 0e50b92482
3 changed files with 32 additions and 5 deletions

View File

@ -720,12 +720,24 @@ ignore_db_dirs_process_additions()
for (i= 0; i < ignore_db_dirs_array.elements; i++)
{
get_dynamic(&ignore_db_dirs_array, (uchar *) &dir, i);
if (my_hash_insert(&ignore_db_dirs_hash, (uchar *) dir))
return true;
ptr= strnmov(ptr, dir->str, dir->length);
if (i + 1 < ignore_db_dirs_array.elements)
ptr= strmov(ptr, ",");
if (my_hash_insert(&ignore_db_dirs_hash, (uchar *)dir))
{
/* ignore duplicates from the config file */
if (my_hash_search(&ignore_db_dirs_hash, (uchar *)dir->str, dir->length))
{
sql_print_warning("Duplicate ignore-db-dir directory name '%.*s' "
"found in the config file(s). Ignoring the duplicate.",
(int) dir->length, dir->str);
my_free(dir);
goto continue_loop;
}
return true;
}
ptr= strnmov(ptr, dir->str, dir->length);
*(ptr++)= ',';
continue_loop:
/*
Set the transferred array element to NULL to avoid double free
in case of error.
@ -734,6 +746,12 @@ ignore_db_dirs_process_additions()
set_dynamic(&ignore_db_dirs_array, (uchar *) &dir, i);
}
if (ptr > opt_ignore_db_dirs)
{
ptr--;
DBUG_ASSERT(*ptr == ',');
}
/* make sure the string is terminated */
DBUG_ASSERT(ptr - opt_ignore_db_dirs <= (ptrdiff_t) len);
*ptr= 0;