Proper initialization of $_message variable according to value of $result

While calling getDisplay, $_message should be an instance of PMA\libraries\Message.

Fix #12650

Also, spaces at the beginning of a table name are allowed if used inside backquotes.

Signed-off-by: Deven Bansod <devenbansod.bits@gmail.com>
This commit is contained in:
Deven Bansod 2016-10-19 15:17:39 +05:30
parent 9de117ffed
commit 1eac9c5ec2
2 changed files with 18 additions and 5 deletions

View File

@ -1245,17 +1245,22 @@ class Table
* 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 @@ class Table
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;

View File

@ -226,7 +226,12 @@ if (isset($result) && empty($message_to_show)) {
}
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);