From e75d5f1145426e9264b48df1a3f692cca0844f71 Mon Sep 17 00:00:00 2001 From: Deven Bansod Date: Thu, 27 Aug 2015 18:12:36 +0530 Subject: [PATCH] Fix #11433 Signed-off-by: Deven Bansod --- libraries/server_privileges.lib.php | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index bc060c35b9..489e6243fb 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -4905,10 +4905,23 @@ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password) $slashedUsername = PMA_Util::sqlAddSlashes($username); $slashedHostname = PMA_Util::sqlAddSlashes($hostname); + // '%' character causes binding problems with sprintf + // and therefore has to be escaped using an extra '%' + $escapedHostname = $hostname; + $escapedUsername = $username; + if (strpos($hostname,'%') !== false) { + $escapedHostname = str_replace('%', '%%', $hostname); + } + if (strpos($username,'%') !== false) { + $escapedUsername = str_replace('%', '%%', $username); + } + $slashedEscapedUsername = PMA_Util::sqlAddSlashes($escapedUsername); + $slashedEscapedHostname = PMA_Util::sqlAddSlashes($escapedHostname); + $create_user_stmt = sprintf( 'CREATE USER \'%s\'@\'%s\'', - $slashedUsername, - $slashedHostname + $slashedEscapedUsername, + $slashedEscapedHostname ); $create_user_real = $create_user_show = $create_user_stmt;