Skip to content

Commit 8400a46

Browse files
author
Marius Burkard
committed
- escape database name on GRANT
1 parent 89d6209 commit 8400a46

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

server/plugins-available/mysql_clientdb_plugin.inc.php

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ function process_host_list($action, $database_name, $database_user, $database_pa
108108
$result->free();
109109
}
110110
}
111-
111+
112112
$app->log("Calling $action for $database_name with access $user_access_mode and hosts " . implode(', ', $host_list), LOGLEVEL_DEBUG);
113-
113+
114114
// loop through hostlist
115115
foreach($host_list as $db_host) {
116116
$db_host = trim($db_host);
@@ -137,22 +137,24 @@ function process_host_list($action, $database_name, $database_user, $database_pa
137137
$app->log("Invalid host " . $db_host . " for GRANT to " . $database_name, LOGLEVEL_DEBUG);
138138
continue;
139139
}
140-
140+
141141
$grants = 'ALL PRIVILEGES';
142142
if($user_access_mode == 'r') $grants = 'SELECT';
143143
elseif($user_access_mode == 'rd') $grants = 'SELECT, DELETE, ALTER, DROP';
144-
144+
145+
$database_name = str_replace('_', '\\_', $link->escape_string($database_name));
146+
145147
if($action == 'GRANT') {
146148
if($user_access_mode == 'r' || $user_access_mode == 'rd') {
147-
if(!$link->query("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
148-
$app->log("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG);
149+
if(!$link->query("REVOKE ALL PRIVILEGES ON `".$database_name."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
150+
$app->log("REVOKE ALL PRIVILEGES ON `".$database_name."`.* FROM '".$link->escape_string($database_user)."'@'$db_host' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG);
149151
$success = true;
150152
}
151-
152-
if(!$link->query("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."'")) $success = false;
153-
$app->log("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG);
153+
154+
if(!$link->query("GRANT " . $grants . " ON `".$database_name."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."'")) $success = false;
155+
$app->log("GRANT " . $grants . " ON `".$database_name."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG);
154156
} elseif($action == 'REVOKE') {
155-
if(!$link->query("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
157+
if(!$link->query("REVOKE ALL PRIVILEGES ON `".$database_name."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
156158
} elseif($action == 'DROP') {
157159
if(!$link->query("DROP USER '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
158160
} elseif($action == 'RENAME') {
@@ -293,7 +295,7 @@ function db_update($event_name, $data) {
293295
$app->log('Unable to connect to the database: '.$link->connect_error, LOGLEVEL_ERROR);
294296
return;
295297
}
296-
298+
297299
// check if the database exists
298300
if($data['new']['database_name'] == $data['old']['database_name']) {
299301
$result = $link->query("SHOW DATABASES LIKE '".$link->escape_string($data['new']['database_name'])."'");

0 commit comments

Comments
 (0)