diff --git a/mysql/list_dbs.cgi b/mysql/list_dbs.cgi index 1d0436190..02effc4d7 100755 --- a/mysql/list_dbs.cgi +++ b/mysql/list_dbs.cgi @@ -27,8 +27,9 @@ if (@{$d->{'data'}}) { next if ($access{'perms'} == 2 && !&can_edit_db($u->[1])); local @cols; push(@cols, "". - ($u->[1] eq '%' || $u->[1] eq '' ? $text{'dbs_any'} - : &html_escape($u->[1])).""); + ($u->[1] eq '%' || $u->[1] eq '' ? $text{'dbs_any'} : + &html_escape(&unquote_mysql_database( + $u->[1]))).""); push(@cols, $u->[2] eq '' ? $text{'dbs_anon'} : &html_escape($u->[2])); push(@cols, $u->[0] eq '%' ? $text{'dbs_any'} : diff --git a/mysql/mysql-lib.pl b/mysql/mysql-lib.pl index 3fef6874f..87b1fa69a 100755 --- a/mysql/mysql-lib.pl +++ b/mysql/mysql-lib.pl @@ -675,6 +675,15 @@ $db =~ s/%/\\%/g; return $db; } +# unquote_mysql_database(name) +# Returns a MySQL database name with \% and \_ characters unescaped +sub unquote_mysql_database { + my ($db) = @_; + $db =~ s/\\%/%/g; + $db =~ s/\\_/_/g; + return $db; +} + # escapestr(string) # Returns a string with quotes escaped, for use in SQL sub escapestr