diff options
author | marko@hundin.mysql.fi <> | 2004-06-01 15:19:09 +0300 |
---|---|---|
committer | marko@hundin.mysql.fi <> | 2004-06-01 15:19:09 +0300 |
commit | 2b2e7e4580ecd692977c97b1266dd9050246ea46 (patch) | |
tree | edf5227b878c8f401692637cae7a135939fcde65 /innobase/dict | |
parent | d01c7b18d8b6a903b40790576cbae6801943eadf (diff) | |
download | mariadb-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.c | 9 |
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; } |