From edba53f3b93e600589df864957b3c64509cc24d9 Mon Sep 17 00:00:00 2001 From: "serg@serg.mysql.com" <> Date: Wed, 21 Mar 2001 17:09:43 +0100 Subject: [PATCH] bug with mysql_change_db() fixed --- BitKeeper/etc/logging_ok | 1 + Docs/manual.texi | 2 +- sql/sql_db.cc | 3 ++- sql/table.cc | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index abbe1d55830..cc3497c2a53 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -2,3 +2,4 @@ jani@hynda.mysql.fi heikki@donna.mysql.fi monty@donna.mysql.fi paul@central.snake.net +serg@serg.mysql.com diff --git a/Docs/manual.texi b/Docs/manual.texi index 62382d89990..e58a3e96679 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -13726,7 +13726,7 @@ in ANSI mode. @xref{ANSI mode}. @multitable @columnfractions .15 .15 .70 @item @strong{Identifier} @tab @strong{Max length} @tab @strong{Allowed characters} -@item Database @tab 64 @tab Any character that is allowed in a directory name except @samp{/}. +@item Database @tab 64 @tab Any character that is allowed in a directory name except @samp{/} or @samp{.}. @item Table @tab 64 @tab Any character that is allowed in a file name, except @samp{/} or @samp{.}. @item Column @tab 64 @tab All characters. @item Alias @tab 255 @tab All characters. diff --git a/sql/sql_db.cc b/sql/sql_db.cc index ed55c2b77ed..5243498f7fc 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -264,9 +264,10 @@ bool mysql_change_db(THD *thd,const char *name) send_error(&thd->net,ER_NO_DB_ERROR); /* purecov: inspected */ DBUG_RETURN(1); /* purecov: inspected */ } - if (length > NAME_LEN) + if ((length > NAME_LEN) || check_db_name(dbname)) { net_printf(&thd->net,ER_WRONG_DB_NAME, dbname); + x_free(dbname); DBUG_RETURN(1); } DBUG_PRINT("general",("Use database: %s", dbname)); diff --git a/sql/table.cc b/sql/table.cc index a6d524840d9..eed4170c14a 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1052,7 +1052,7 @@ bool check_db_name(const char *name) } } #endif - if (*name == '/' || *name == FN_LIBCHAR) + if (*name == '/' || *name == FN_LIBCHAR || *name == FN_EXTCHAR) return 1; name++; }