diff --git a/gulliver/thirdparty/creole/Creole.php b/gulliver/thirdparty/creole/Creole.php index 7d6185ce1..72b5e1683 100644 --- a/gulliver/thirdparty/creole/Creole.php +++ b/gulliver/thirdparty/creole/Creole.php @@ -189,14 +189,14 @@ class Creole { trigger_error("The Creole::NO_ASSOC_LOWER flag has been deprecated, and is now the default behavior. Use Creole::COMPAT_ASSOC_LOWER to lowercase resulset keys.", E_USER_WARNING); } - if(!class_exists('G')){ - $realdocuroot = str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] ); - $docuroot = explode( '/', $realdocuroot ); - array_pop( $docuroot ); - $pathhome = implode( '/', $docuroot ) . '/'; - array_pop( $docuroot ); - $pathTrunk = implode( '/', $docuroot ) . '/'; - require_once($pathTrunk.'gulliver/system/class.g.php'); + if (!class_exists('G')) { + $realdocuroot = str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']); + $docuroot = explode('/', $realdocuroot); + array_pop($docuroot); + $pathhome = implode('/', $docuroot) . '/'; + array_pop($docuroot); + $pathTrunk = implode('/', $docuroot) . '/'; + require_once($pathTrunk . 'gulliver/system/class.g.php'); } // sort $dsninfo by keys so the serialized result is always the same // for identical connection parameters, no matter what their order is @@ -309,7 +309,7 @@ class Creole { ); $info = parse_url($dsn); - + $info['pass'] = urldecode($info['pass']); if (count($info) === 1) { // if there's only one element in result, then it must be the phptype $parsed['phptype'] = array_pop($info); return $parsed; diff --git a/workflow/engine/config/databases.php b/workflow/engine/config/databases.php index 8528bcb1a..b15d65731 100644 --- a/workflow/engine/config/databases.php +++ b/workflow/engine/config/databases.php @@ -31,13 +31,13 @@ if (defined('PATH_DB') && defined('SYS_SYS')) { require_once(PATH_DB . SYS_SYS . '/db.php'); //to do: enable for other databases $dbType = DB_ADAPTER; - $dsn = DB_ADAPTER . '://' . DB_USER . ':' . DB_PASS . '@' . DB_HOST . '/' . DB_NAME; + $dsn = DB_ADAPTER . '://' . DB_USER . ':' . urlencode(DB_PASS) . '@' . DB_HOST . '/' . DB_NAME; //to do: enable a mechanism to select RBAC Database - $dsnRbac = DB_ADAPTER . '://' . DB_RBAC_USER . ':' . DB_RBAC_PASS . '@' . DB_RBAC_HOST . '/' . DB_RBAC_NAME; + $dsnRbac = DB_ADAPTER . '://' . DB_RBAC_USER . ':' . urlencode(DB_RBAC_PASS) . '@' . DB_RBAC_HOST . '/' . DB_RBAC_NAME; //to do: enable a mechanism to select report Database - $dsnReport = DB_ADAPTER . '://' . DB_REPORT_USER . ':' . DB_REPORT_PASS . '@' . DB_REPORT_HOST . '/' . DB_REPORT_NAME; + $dsnReport = DB_ADAPTER . '://' . DB_REPORT_USER . ':' . urlencode(DB_REPORT_PASS) . '@' . DB_REPORT_HOST . '/' . DB_REPORT_NAME; switch (DB_ADAPTER) { case 'mysql': diff --git a/workflow/engine/controllers/installer.php b/workflow/engine/controllers/installer.php index 70d4d0bc6..cef3f595d 100644 --- a/workflow/engine/controllers/installer.php +++ b/workflow/engine/controllers/installer.php @@ -679,8 +679,8 @@ class Installer extends Controller $db_port = $filter->validateInput($db_port); $db_username = trim( $_REQUEST['db_username'] ); $db_username = $filter->validateInput($db_username); - $db_password = trim( $_REQUEST['db_password'] ); - $db_password = $filter->validateInput($db_password); + $db_password = urlencode(trim($_REQUEST['db_password'])); + $db_password = urldecode($filter->validateInput($db_password)); $wf = trim( $_REQUEST['wfDatabase'] ); $rb = trim( $_REQUEST['wfDatabase'] ); $rp = trim( $_REQUEST['wfDatabase'] ); @@ -707,9 +707,6 @@ class Installer extends Controller try { $db_host = ($db_port != '' && $db_port != 3306) ? $db_hostname . ':' . $db_port : $db_hostname; - $db_host = $filter->validateInput($db_host); - $db_username = $filter->validateInput($db_username); - $db_password = $filter->validateInput($db_password); $this->link = @mysql_connect( $db_host, $db_username, $db_password ); $this->installLog( G::LoadTranslation('ID_CONNECT_TO_SERVER', SYS_LANG, Array($db_hostname, $db_port, $db_username ) )); @@ -1023,8 +1020,8 @@ class Installer extends Controller $db_port = $filter->validateInput($db_port); $db_username = trim( $_REQUEST['db_username'] ); $db_username = $filter->validateInput($db_username); - $db_password = trim( $_REQUEST['db_password'] ); - $db_password = $filter->validateInput($db_password); + $db_password = urlencode(trim($_REQUEST['db_password'])); + $db_password = urldecode($filter->validateInput($db_password)); $wf = trim( $_REQUEST['wfDatabase'] ); $rb = trim( $_REQUEST['wfDatabase'] ); $rp = trim( $_REQUEST['wfDatabase'] ); @@ -1047,9 +1044,6 @@ class Installer extends Controller try { $db_host = ($db_port != '' && $db_port != 1433) ? $db_hostname . ':' . $db_port : $db_hostname; - $db_host = $filter->validateInput($db_host); - $db_username = $filter->validateInput($db_username); - $db_password = $filter->validateInput($db_password); $this->link = @mssql_connect( $db_host, $db_username, $db_password ); $this->installLog( G::LoadTranslation('ID_CONNECT_TO_SERVER', SYS_LANG, Array( $db_hostname, $db_port, $db_username )) ); @@ -1243,7 +1237,8 @@ class Installer extends Controller if ($_REQUEST['db_engine'] == 'mysql') { $db_hostname = $filter->validateInput($_REQUEST['db_hostname']); $db_username = $filter->validateInput($_REQUEST['db_username']); - $db_password = $filter->validateInput($_REQUEST['db_password']); + $db_password = urlencode($_REQUEST['db_password']); + $db_password = urldecode($filter->validateInput($db_password)); $db_port = $filter->validateInput($_REQUEST['db_port']); if($db_port != "3306"){ $db_hostname = $db_hostname.":".$db_port; @@ -1287,35 +1282,33 @@ class Installer extends Controller * Privates functions section, non callable by http request */ - private function testMySQLconnection () + private function testMySQLconnection() { G::LoadSystem('inputfilter'); $filter = new InputFilter(); $info = new StdClass(); $info->result = false; $info->message = ''; - if (! function_exists( "mysql_connect" )) { + if (!function_exists("mysql_connect")) { $info->message = G::LoadTranslation('ID_PHP_MYSQL_NOT _INSTALL'); return $info; } - $db_hostname = $_REQUEST['db_hostname']; - $db_hostname = $filter->validateInput($db_hostname); - $db_port = $_REQUEST['db_port']; - $db_port = $filter->validateInput($db_port); - $db_username = $_REQUEST['db_username']; - $db_username = $filter->validateInput($db_username); - $db_password = $_REQUEST['db_password']; - $db_password = $filter->validateInput($db_password); - $fp = @fsockopen( $db_hostname, $db_port, $errno, $errstr, 30 ); - if (! $fp) { + $dataRequest = $_REQUEST; + $db_hostname = $filter->validateInput($dataRequest['db_hostname']); + $db_port = $filter->validateInput($dataRequest['db_port']); + $db_username = $filter->validateInput($dataRequest['db_username']); + $db_password = urlencode($dataRequest['db_password']); + $db_password = urldecode($filter->validateInput($db_password)); + $fp = @fsockopen($db_hostname, $db_port, $errno, $errstr, 30); + if (!$fp) { $info->message .= G::LoadTranslation('ID_CONNECTION_ERROR', SYS_LANG, Array("$errstr ($errno)")); return $info; } $db_host = ($db_port != '' && $db_port != 1433) ? $db_hostname . ':' . $db_port : $db_hostname; - $link = @mysql_connect( $db_host, $db_username, $db_password ); - if (! $link) { + $link = @mysql_connect($db_host, $db_username, $db_password); + if (!$link) { $info->message .= G::LoadTranslation('ID_MYSQL_CREDENTIALS_WRONG'); return $info; } @@ -1323,12 +1316,12 @@ class Installer extends Controller $db_hostname = $filter->validateInput($db_hostname, 'nosql'); $query = "SELECT * FROM `information_schema`.`USER_PRIVILEGES` where (GRANTEE = \"'%s'@'%s'\" OR GRANTEE = \"'%s'@'%%'\") "; $query = $filter->preventSqlInjection($query, array($db_username, $db_hostname, $db_username)); - $res = @mysql_query( $query, $link ); - $row = @mysql_fetch_array( $res ); - $hasSuper = is_array( $row ); - @mysql_free_result( $res ); - @mysql_close( $link ); - if (! $hasSuper) { + $res = @mysql_query($query, $link); + $row = @mysql_fetch_array($res); + $hasSuper = is_array($row); + @mysql_free_result($res); + @mysql_close($link); + if (!$hasSuper) { $info->message .= G::LoadTranslation('ID_CONNECTION_ERROR_PRIVILEGE', SYS_LANG, Array($db_username)); return $info; } @@ -1337,7 +1330,7 @@ class Installer extends Controller return $info; } - private function testMSSQLconnection () + private function testMSSQLconnection() { G::LoadSystem('inputfilter'); $filter = new InputFilter(); @@ -1345,30 +1338,27 @@ class Installer extends Controller $info->result = false; $info->message = ''; - if (! function_exists( "mssql_connect" )) { + if (!function_exists("mssql_connect")) { $info->message = G::LoadTranslation('ID_PHP_MSSQL_NOT_INSTALLED'); return $info; } + $dataRequest = $_REQUEST; + $db_hostname = $filter->validateInput($dataRequest['db_hostname']); + $db_port = $filter->validateInput($dataRequest['db_port']); + $db_username = $filter->validateInput($dataRequest['db_username']); + $db_password = urlencode($dataRequest['db_password']); + $db_password = urldecode($filter->validateInput($db_password)); - $db_hostname = $_REQUEST['db_hostname']; - $db_hostname = $filter->validateInput($db_hostname); - $db_port = $_REQUEST['db_port']; - $db_port = $filter->validateInput($db_port); - $db_username = $_REQUEST['db_username']; - $db_username = $filter->validateInput($db_username); - $db_password = $_REQUEST['db_password']; - $db_password = $filter->validateInput($db_password); - - $fp = @fsockopen( $db_hostname, $db_port, $errno, $errstr, 30 ); - if (! $fp) { + $fp = @fsockopen($db_hostname, $db_port, $errno, $errstr, 30); + if (!$fp) { $info->message .= G::LoadTranslation('ID_CONNECTION_ERROR', SYS_LANG, Array("$errstr ($errno)")); return $info; } $db_host = ($db_port != '' && $db_port != 1433) ? $db_hostname . ':' . $db_port : $db_hostname; - $link = @mssql_connect( $db_host, $db_username, $db_password ); - if (! $link) { + $link = @mssql_connect($db_host, $db_username, $db_password); + if (!$link) { $info->message .= G::LoadTranslation('ID_MYSQL_CREDENTIALS_WRONG'); return $info; } @@ -1378,38 +1368,38 @@ class Installer extends Controller $hasSecurityAdmin = false; $hasSysAdmin = false; - $res = @mssql_query( "EXEC sp_helpsrvrolemember 'dbcreator' ", $link ); - $row = mssql_fetch_array( $res ); - while (is_array( $row )) { + $res = @mssql_query("EXEC sp_helpsrvrolemember 'dbcreator' ", $link); + $row = mssql_fetch_array($res); + while (is_array($row)) { if ($row['MemberName'] == $db_username) { $hasDbCreator = true; } - $row = mssql_fetch_array( $res ); + $row = mssql_fetch_array($res); } - mssql_free_result( $res ); + mssql_free_result($res); - $res = @mssql_query( "EXEC sp_helpsrvrolemember 'sysadmin' ", $link ); - $row = mssql_fetch_array( $res ); - while (is_array( $row )) { + $res = @mssql_query("EXEC sp_helpsrvrolemember 'sysadmin' ", $link); + $row = mssql_fetch_array($res); + while (is_array($row)) { if ($row['MemberName'] == $db_username) { $hasSysAdmin = true; } - $row = mssql_fetch_array( $res ); + $row = mssql_fetch_array($res); } - mssql_free_result( $res ); + mssql_free_result($res); - $res = @mssql_query( "EXEC sp_helpsrvrolemember 'SecurityAdmin' ", $link ); - $row = mssql_fetch_array( $res ); - while (is_array( $row )) { + $res = @mssql_query("EXEC sp_helpsrvrolemember 'SecurityAdmin' ", $link); + $row = mssql_fetch_array($res); + while (is_array($row)) { if ($row['MemberName'] == $db_username) { $hasSecurityAdmin = true; } - $row = mssql_fetch_array( $res ); + $row = mssql_fetch_array($res); } - mssql_free_result( $res ); + mssql_free_result($res); - if (! ($hasSysAdmin || ($hasSecurityAdmin && $hasDbCreator))) { - $info->message .= G::LoadTranslation('ID_CONNECTION_ERROR_SECURITYADMIN', SYS_LANG, Array($db_username) ); + if (!($hasSysAdmin || ($hasSecurityAdmin && $hasDbCreator))) { + $info->message .= G::LoadTranslation('ID_CONNECTION_ERROR_SECURITYADMIN', SYS_LANG, Array($db_username)); return $info; } @@ -1675,8 +1665,8 @@ class Installer extends Controller $db_port = $filter->validateInput($db_port); $db_username = trim( $_REQUEST['db_username'] ); $db_username = $filter->validateInput($db_username); - $db_password = trim( $_REQUEST['db_password'] ); - $db_password = $filter->validateInput($db_password); + $db_password = urlencode(trim($_REQUEST['db_password'])); + $db_password = urldecode($filter->validateInput($db_password)); $wf = trim( $_REQUEST['wfDatabase'] ); $wf = $filter->validateInput($wf);