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:
@ -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;
|
||||
|
Reference in New Issue
Block a user