diff --git a/libraries/Table.php b/libraries/Table.php index 342e94cb4d7a..33cde1139b35 100644 --- a/libraries/Table.php +++ b/libraries/Table.php @@ -1245,17 +1245,22 @@ static public function moveCopy($source_db, $source_table, $target_db, * checks if given name is a valid table name, * currently if not empty, trailing spaces, '.', '/' and '\' * - * @param string $table_name name to check + * @param string $table_name name to check + * @param boolean $is_backquoted whether this name is used inside backquotes or not * * @todo add check for valid chars in filename on current system/os * @see https://dev.mysql.com/doc/refman/5.0/en/legal-names.html * * @return boolean whether the string is valid or not */ - static function isValidName($table_name) + static function isValidName($table_name, $is_backquoted = false) { - if ($table_name !== trim($table_name)) { - // trailing spaces + if ($table_name !== rtrim($table_name)) { + // trailing spaces not allowed even in backquotes + return false; + } + if (! $is_backquoted && $table_name !== trim($table_name)) { + // spaces at the start or in between return false; } @@ -1310,7 +1315,10 @@ function () { return true; } - if (! Table::isValidName($new_name)) { + // Allow whitespaces (not trailing) in $new_name, + // since we are using $backquoted in getting the fullName of table + // below to be used in the query + if (! Table::isValidName($new_name, true)) { $this->errors[] = __('Invalid table name:') . ' ' . $new_table->getFullName(); return false; diff --git a/tbl_operations.php b/tbl_operations.php index 4f3b66760e48..3c3754d7f4a6 100644 --- a/tbl_operations.php +++ b/tbl_operations.php @@ -226,7 +226,12 @@ } exit; } + } else { + $_message = $result + ? PMA\libraries\Message::success($_message) + : PMA\libraries\Message::error($_message); } + if (! empty($warning_messages)) { $_message = new PMA\libraries\Message; $_message->addMessages($warning_messages);