Addshore has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/87561


Change subject: Add further escaping to mysql and sqlite classes
......................................................................

Add further escaping to mysql and sqlite classes

Change-Id: Id0ca317a142f5f4755115a8de12ca150b3934377
---
M src/MySQL/MySQLFieldSqlBuilder.php
M src/MySQL/MySQLSchemaSqlBuilder.php
M src/MySQL/MySQLTableSqlBuilder.php
M src/SQLite/SQLiteFieldSqlBuilder.php
M src/SQLite/SQLiteSchemaSqlBuilder.php
M src/SQLite/SQLiteTableSqlBuilder.php
6 files changed, 23 insertions(+), 19 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseDatabase 
refs/changes/61/87561/1

diff --git a/src/MySQL/MySQLFieldSqlBuilder.php 
b/src/MySQL/MySQLFieldSqlBuilder.php
index bcfcfd5..f58bc37 100644
--- a/src/MySQL/MySQLFieldSqlBuilder.php
+++ b/src/MySQL/MySQLFieldSqlBuilder.php
@@ -24,7 +24,7 @@
        }
 
        public function getFieldSQL( FieldDefinition $field ){
-               $sql =  $field->getName() . ' ';
+               $sql =  $this->escaper->getEscapedValue( $field->getName() ) . 
' ';
 
                $sql .= $this->getFieldType( $field->getType() );
 
diff --git a/src/MySQL/MySQLSchemaSqlBuilder.php 
b/src/MySQL/MySQLSchemaSqlBuilder.php
index 7b96c3a..05cce16 100644
--- a/src/MySQL/MySQLSchemaSqlBuilder.php
+++ b/src/MySQL/MySQLSchemaSqlBuilder.php
@@ -17,11 +17,13 @@
  */
 class MySQLSchemaSqlBuilder implements SchemaModificationSqlBuilder {
 
+       protected $escaper;
        protected $fieldSqlBuilder;
        protected $tableNameFormatter;
 
-       public function __construct( Escaper $fieldValueEscaper, 
TableNameFormatter $tableNameFormatter ) {
-               $this->fieldSqlBuilder = new MySQLFieldSqlBuilder( 
$fieldValueEscaper );
+       public function __construct( Escaper $escaper, TableNameFormatter 
$tableNameFormatter ) {
+               $this->escaper = $escaper;
+               $this->fieldSqlBuilder = new MySQLFieldSqlBuilder( $escaper );
                $this->tableNameFormatter = $tableNameFormatter;
        }
 
@@ -33,7 +35,7 @@
         */
        public function getRemoveFieldSql( $tableName, $fieldName ) {
                $tableName = $this->tableNameFormatter->formatTableName( 
$tableName );
-               //todo escape $fieldName
+               $fieldName = $this->escaper->getEscapedValue( $fieldName );
                return "ALTER TABLE {$tableName} DROP {$fieldName}";
        }
 
diff --git a/src/MySQL/MySQLTableSqlBuilder.php 
b/src/MySQL/MySQLTableSqlBuilder.php
index c1ae2ab..0428828 100644
--- a/src/MySQL/MySQLTableSqlBuilder.php
+++ b/src/MySQL/MySQLTableSqlBuilder.php
@@ -27,12 +27,12 @@
 
        /**
         * @param string $dbName
-        * @param Escaper $fieldValueEscaper
+        * @param Escaper $escaper
         * @param TableNameFormatter $tableNameFormatter
         */
-       public function __construct( $dbName, Escaper $fieldValueEscaper, 
TableNameFormatter $tableNameFormatter  ) {
+       public function __construct( $dbName, Escaper $escaper, 
TableNameFormatter $tableNameFormatter  ) {
                $this->dbName = $dbName;
-               $this->escaper = $fieldValueEscaper;
+               $this->escaper = $escaper;
                $this->tableNameFormatter = $tableNameFormatter;
                $this->fieldSqlBuilder = new MySQLFieldSqlBuilder( 
$this->escaper );
        }
@@ -80,12 +80,12 @@
                $sql = $this->getIndexType( $index->getType() );
 
                if( $index->getType() !== IndexDefinition::TYPE_PRIMARY ){
-                       $sql .= ' `'.$index->getName().'`';
+                       $sql .= ' `' . $this->escaper->getEscapedValue( 
$index->getName() ) . '`';
                }
 
                $columnNames = array();
                foreach( $index->getColumns() as $columnName => $intSize ){
-                       $columnNames[] = $columnName;
+                       $columnNames[] =  $this->escaper->getEscapedValue( 
$columnName );
                }
 
                $sql .= ' (`'.implode( '`,`', $columnNames ).'`)';
diff --git a/src/SQLite/SQLiteFieldSqlBuilder.php 
b/src/SQLite/SQLiteFieldSqlBuilder.php
index 13eba45..a8ab1ee 100644
--- a/src/SQLite/SQLiteFieldSqlBuilder.php
+++ b/src/SQLite/SQLiteFieldSqlBuilder.php
@@ -24,7 +24,7 @@
        }
 
        public function getFieldSQL( FieldDefinition $field ){
-               $sql = $field->getName() . ' ';
+               $sql = $this->escaper->getEscapedValue( $field->getName() ) . ' 
';
 
                $sql .= $this->getFieldType( $field->getType() );
 
diff --git a/src/SQLite/SQLiteSchemaSqlBuilder.php 
b/src/SQLite/SQLiteSchemaSqlBuilder.php
index 942548b..cea9209 100644
--- a/src/SQLite/SQLiteSchemaSqlBuilder.php
+++ b/src/SQLite/SQLiteSchemaSqlBuilder.php
@@ -20,14 +20,16 @@
  */
 class SQLiteSchemaSqlBuilder implements SchemaModificationSqlBuilder {
 
+       protected $escaper;
        protected $fieldSqlBuilder;
        protected $tableNameFormatter;
 
-       public function __construct( Escaper $fieldValueEscaper, 
TableNameFormatter $tableNameFormatter, TableDefinitionReader $definitionReader 
) {
-               $this->fieldSqlBuilder = new SQLiteFieldSqlBuilder( 
$fieldValueEscaper );
+       public function __construct( Escaper $escaper, TableNameFormatter 
$tableNameFormatter, TableDefinitionReader $definitionReader ) {
+               $this->escaper = $escaper;
+               $this->fieldSqlBuilder = new SQLiteFieldSqlBuilder( $escaper );
                $this->tableNameFormatter = $tableNameFormatter;
                $this->tableDefinitionReader = $definitionReader;
-               $this->tableSqlBuilder = new SQLiteTableSqlBuilder( 
$fieldValueEscaper, $tableNameFormatter );
+               $this->tableSqlBuilder = new SQLiteTableSqlBuilder( $escaper, 
$tableNameFormatter );
        }
 
        /**
@@ -60,7 +62,7 @@
        private function getFieldsSql( $fields ){
                $fieldNames = array();
                foreach( $fields as $field ){
-                       $fieldNames[] = $field->getName();
+                       $fieldNames[] = $this->escaper->getEscapedValue( 
$field->getName() );
                }
                return implode( ', ', $fieldNames );
        }
diff --git a/src/SQLite/SQLiteTableSqlBuilder.php 
b/src/SQLite/SQLiteTableSqlBuilder.php
index c190b1b..19889d5 100644
--- a/src/SQLite/SQLiteTableSqlBuilder.php
+++ b/src/SQLite/SQLiteTableSqlBuilder.php
@@ -25,11 +25,11 @@
        protected $fieldSqlBuilder;
 
        /**
-        * @param Escaper $fieldValueEscaper
+        * @param Escaper $escaper
         * @param TableNameFormatter $tableNameFormatter
         */
-       public function __construct( Escaper $fieldValueEscaper, 
TableNameFormatter $tableNameFormatter ) {
-               $this->escaper = $fieldValueEscaper;
+       public function __construct( Escaper $escaper, TableNameFormatter 
$tableNameFormatter ) {
+               $this->escaper = $escaper;
                $this->tableNameFormatter = $tableNameFormatter;
                $this->fieldSqlBuilder = new SQLiteFieldSqlBuilder( 
$this->escaper );
        }
@@ -81,12 +81,12 @@
        protected function getIndexSQL( IndexDefinition $index, TableDefinition 
$table ) {
                $sql = 'CREATE ';
                $sql .= $this->getIndexType( $index->getType() ) . ' ';
-               $sql .= $index->getName() . ' ';
+               $sql .= $this->escaper->getEscapedValue( $index->getName() ) . 
' ';
                $sql .= 'ON ' . $this->formatTableName( $table->getName() );
 
                $columnNames = array();
                foreach( $index->getColumns() as $columnName => $intSize ){
-                       $columnNames[] = $columnName;
+                       $columnNames[] = $this->escaper->getEscapedValue( 
$columnName );
                }
 
                $sql .= ' ('.implode( ',', $columnNames ).');';

-- 
To view, visit https://gerrit.wikimedia.org/r/87561
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id0ca317a142f5f4755115a8de12ca150b3934377
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseDatabase
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to