summaryrefslogtreecommitdiff
path: root/innobase/dict
diff options
context:
space:
mode:
authormarko@hundin.mysql.fi <>2004-06-01 15:19:09 +0300
committermarko@hundin.mysql.fi <>2004-06-01 15:19:09 +0300
commit2b2e7e4580ecd692977c97b1266dd9050246ea46 (patch)
treeedf5227b878c8f401692637cae7a135939fcde65 /innobase/dict
parentd01c7b18d8b6a903b40790576cbae6801943eadf (diff)
downloadmariadb-git-2b2e7e4580ecd692977c97b1266dd9050246ea46.tar.gz
InnoDB cleanup: Fix potential buffer overflows,
allow deletion of tablespaces whose names contain "'"
Diffstat (limited to 'innobase/dict')
-rw-r--r--innobase/dict/dict0load.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/innobase/dict/dict0load.c b/innobase/dict/dict0load.c
index b55050ee83f..ee4ae9dd1a1 100644
--- a/innobase/dict/dict0load.c
+++ b/innobase/dict/dict0load.c
@@ -207,7 +207,6 @@ dict_check_tablespaces_or_store_max_id(
ulint space_id;
ulint max_space_id = 0;
mtr_t mtr;
- char name[OS_FILE_MAX_PATH];
mutex_enter(&(dict_sys->mutex));
@@ -247,9 +246,7 @@ loop:
/* We found one */
- ut_a(len < OS_FILE_MAX_PATH - 10);
- ut_memcpy(name, field, len);
- name[len] = '\0';
+ char* name = mem_strdupl(field, len);
field = rec_get_nth_field(rec, 9, &len);
ut_a(len == 4);
@@ -267,7 +264,9 @@ loop:
fil_space_for_table_exists_in_mem(space_id, name,
TRUE, TRUE);
}
-
+
+ mem_free(name);
+
if (space_id > max_space_id) {
max_space_id = space_id;
}