MDL-61626 core_dml: pgsql and schema qualification.

This commit is contained in:
Matteo Scaramuccia
2018-03-12 22:51:38 +01:00
committed by Matteo Scaramuccia
parent f4e99c54bb
commit c499b15fe0
+5 -3
View File
@@ -345,13 +345,15 @@ class pgsql_native_moodle_database extends moodle_database {
if ($result) {
while ($row = pg_fetch_assoc($result)) {
if (!preg_match('/CREATE (|UNIQUE )INDEX ([^\s]+) ON '.$tablename.' USING ([^\s]+) \(([^\)]+)\)/i', $row['indexdef'], $matches)) {
// The index definition could be generated schema-qualifying the target table name
// for safety, depending on the pgsql version (CVE-2018-1058).
if (!preg_match('/CREATE (|UNIQUE )INDEX ([^\s]+) ON (|'.$row['schemaname'].'\.)'.$tablename.' USING ([^\s]+) \(([^\)]+)\)/i', $row['indexdef'], $matches)) {
continue;
}
if ($matches[4] === 'id') {
if ($matches[5] === 'id') {
continue;
}
$columns = explode(',', $matches[4]);
$columns = explode(',', $matches[5]);
foreach ($columns as $k=>$column) {
$column = trim($column);
if ($pos = strpos($column, ' ')) {