summaryrefslogtreecommitdiff
path: root/storage/innobase/dict/dict0dict.cc
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2019-03-06 16:20:13 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2019-03-06 16:20:13 +0200
commit77103e98329b51667e124b8861ff6a8b77e25cbb (patch)
tree34f004ea6469148846d904b6968420b3a4515db1 /storage/innobase/dict/dict0dict.cc
parent723ffdb32ee785cbc511abc457eb70d41c2fcce3 (diff)
parentc155946c90307ba448af8b4b5161f35b8af9d31d (diff)
downloadmariadb-git-77103e98329b51667e124b8861ff6a8b77e25cbb.tar.gz
Merge 10.2 into 10.3
Diffstat (limited to 'storage/innobase/dict/dict0dict.cc')
-rw-r--r--storage/innobase/dict/dict0dict.cc24
1 files changed, 12 insertions, 12 deletions
diff --git a/storage/innobase/dict/dict0dict.cc b/storage/innobase/dict/dict0dict.cc
index 0da8f178d5d..39e66057ac3 100644
--- a/storage/innobase/dict/dict0dict.cc
+++ b/storage/innobase/dict/dict0dict.cc
@@ -1572,13 +1572,8 @@ dict_table_rename_in_cache(
ut_ad(mutex_own(&dict_sys->mutex));
/* store the old/current name to an automatic variable */
- if (strlen(table->name.m_name) + 1 <= sizeof(old_name)) {
- strcpy(old_name, table->name.m_name);
- } else {
- ib::fatal() << "Too long table name: "
- << table->name
- << ", max length is " << MAX_FULL_NAME_LEN;
- }
+ ut_a(strlen(table->name.m_name) < sizeof old_name);
+ strcpy(old_name, table->name.m_name);
fold = ut_fold_string(new_name);
@@ -1768,7 +1763,7 @@ dict_table_rename_in_cache(
ulint db_len;
char* old_id;
- char old_name_cs_filename[MAX_TABLE_NAME_LEN+20];
+ char old_name_cs_filename[MAX_FULL_NAME_LEN+1];
uint errors = 0;
/* All table names are internally stored in charset
@@ -1785,7 +1780,8 @@ dict_table_rename_in_cache(
in old_name_cs_filename */
strncpy(old_name_cs_filename, old_name,
- MAX_TABLE_NAME_LEN);
+ MAX_FULL_NAME_LEN);
+ old_name_cs_filename[MAX_FULL_NAME_LEN] = '\0';
if (strstr(old_name, TEMP_TABLE_PATH_PREFIX) == NULL) {
innobase_convert_to_system_charset(
@@ -1807,7 +1803,9 @@ dict_table_rename_in_cache(
/* Old name already in
my_charset_filename */
strncpy(old_name_cs_filename, old_name,
- MAX_TABLE_NAME_LEN);
+ MAX_FULL_NAME_LEN);
+ old_name_cs_filename[MAX_FULL_NAME_LEN]
+ = '\0';
}
}
@@ -1833,7 +1831,7 @@ dict_table_rename_in_cache(
/* This is a generated >= 4.0.18 format id */
- char table_name[MAX_TABLE_NAME_LEN] = "";
+ char table_name[MAX_TABLE_NAME_LEN + 1];
uint errors = 0;
if (strlen(table->name.m_name)
@@ -1848,6 +1846,7 @@ dict_table_rename_in_cache(
/* Convert the table name to UTF-8 */
strncpy(table_name, table->name.m_name,
MAX_TABLE_NAME_LEN);
+ table_name[MAX_TABLE_NAME_LEN] = '\0';
innobase_convert_to_system_charset(
strchr(table_name, '/') + 1,
strchr(table->name.m_name, '/') + 1,
@@ -1857,9 +1856,10 @@ dict_table_rename_in_cache(
/* Table name could not be converted
from charset my_charset_filename to
UTF-8. This means that the table name
- is already in UTF-8 (#mysql#50). */
+ is already in UTF-8 (#mysql50#). */
strncpy(table_name, table->name.m_name,
MAX_TABLE_NAME_LEN);
+ table_name[MAX_TABLE_NAME_LEN] = '\0';
}
/* Replace the prefix 'databasename/tablename'