Skip to content

Commit afdbd4b

Browse files
committed
Security: Plugin: VChamilo: Add clearDatabaseName method to sanitize database names and update usages
1 parent 7903cef commit afdbd4b

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

main/inc/lib/database.lib.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -843,4 +843,9 @@ public static function escapeField($field)
843843
{
844844
return self::escape_string(preg_replace("/[^a-zA-Z0-9_.]/", '', $field));
845845
}
846+
847+
public static function clearDatabaseName(string $dbName): string
848+
{
849+
return preg_replace('/[^a-zA-Z0-9_\-]/', '', $dbName);
850+
}
846851
}

main/install/index.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -767,7 +767,7 @@ function send_contact_information() {
767767
$dbPortForm
768768
);
769769

770-
$dbNameForm = preg_replace('/[^a-zA-Z0-9_\-]/', '', $dbNameForm);
770+
$dbNameForm = Database::clearDatabaseName($dbNameForm);
771771

772772
// Drop and create the database anyways
773773
$manager->getConnection()->getSchemaManager()->dropAndCreateDatabase($dbNameForm);

plugin/vchamilo/lib/Virtual.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -921,10 +921,7 @@ public static function getConnectionFromInstance($instance, $getManager = false)
921921
return false;
922922
}
923923

924-
/**
925-
* @param $data
926-
*/
927-
public static function addInstance($data)
924+
public static function addInstance(stdClass $data)
928925
{
929926
if (isset($data->what)) {
930927
unset($data->what);
@@ -967,7 +964,7 @@ public static function addInstance($data)
967964
return;
968965
}
969966

970-
$databaseName = $data->main_database;
967+
$databaseName = Database::clearDatabaseName($data->main_database);
971968
$data->main_database = '';
972969
$connection = self::getConnectionFromInstance($data);
973970
$data->main_database = $databaseName;
@@ -1061,10 +1058,11 @@ public static function addInstance($data)
10611058
}
10621059

10631060
/**
1064-
* @param stdClass $data
1065-
* @param string $fromVersion
1061+
* @throws \Doctrine\DBAL\Exception
1062+
*
1063+
* @return false|void
10661064
*/
1067-
public static function importInstance($data, $fromVersion)
1065+
public static function importInstance(stdClass $data, string $fromVersion)
10681066
{
10691067
if (isset($data->what)) {
10701068
unset($data->what);
@@ -1094,7 +1092,7 @@ public static function importInstance($data, $fromVersion)
10941092
unset($data->upload_path);
10951093

10961094
$newDatabase = clone $data;
1097-
$newDatabase->main_database = $newDatabase->import_to_main_database;
1095+
$newDatabase->main_database = Database::clearDatabaseName($newDatabase->import_to_main_database);
10981096
$newDatabase->db_user = $newDatabase->import_to_db_user;
10991097
$newDatabase->db_password = $newDatabase->import_to_db_password;
11001098
$newDatabase->db_host = $newDatabase->import_to_db_host;

0 commit comments

Comments
 (0)