Skip to content

Commit

Permalink
Properly escape strings in MySQL statement values
Browse files Browse the repository at this point in the history
Use *_real_escape string functions provided by connectors to escape strings while exporting

Fix phpmyadmin#12453

Signed-off-by: Deven Bansod <devenbansod.bits@gmail.com>
  • Loading branch information
devenbansod committed Sep 18, 2016
1 parent 9d27af8 commit 22eaf18
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 4 deletions.
13 changes: 13 additions & 0 deletions libraries/DatabaseInterface.php
Expand Up @@ -2648,6 +2648,19 @@ public function fieldFlags($result, $i)
return $this->_extension->fieldFlags($result, $i);
}

/**
* returns properly escaped string for use in MySQL queries
*
* @param resource $link the connection object
* @param string $str value (as a string)
*
* @return string escaped string from $str
*/
public function escapeString($link, $str)
{
return $this->_extension->escapeString($link, $str);
}

/**
* Gets server connection port
*
Expand Down
13 changes: 13 additions & 0 deletions libraries/dbi/DBIDummy.php
Expand Up @@ -1256,4 +1256,17 @@ public function fieldFlags($result, $i)
{
return '';
}

/**
* returns properly escaped string for use in MySQL queries
*
* @param resource $link the connection object
* @param string $str value (as a string)
*
* @return string escaped string from $str
*/
public function escapeString($link, $str)
{
return '';
}
}
10 changes: 10 additions & 0 deletions libraries/dbi/DBIExtension.php
Expand Up @@ -235,4 +235,14 @@ public function fieldName($result, $i);
* @return string field flags
*/
public function fieldFlags($result, $i);

/**
* returns properly escaped string for use in MySQL queries
*
* @param resource $link the connection object
* @param string $str value (as a string)
*
* @return string escaped string from $str
*/
public function escapeString($link, $str);
}
13 changes: 13 additions & 0 deletions libraries/dbi/DBIMysql.php
Expand Up @@ -471,4 +471,17 @@ public function storeResult($result)
{
return false;
}

/**
* returns properly escaped string for use in MySQL queries
*
* @param resource $link the connection object
* @param string $str value (as a string)
*
* @return string escaped string from $str
*/
public function escapeString($link, $str)
{
return mysql_real_escape_string($link, $str);
}
}
13 changes: 13 additions & 0 deletions libraries/dbi/DBIMysqli.php
Expand Up @@ -615,4 +615,17 @@ public function fieldFlags($result, $i)
}
return implode(' ', $flags);
}

/**
* returns properly escaped string for use in MySQL queries
*
* @param resource $link the connection object
* @param string $str value (as a string)
*
* @return string escaped string from $str
*/
public function escapeString($link, $str)
{
return mysqli_real_escape_string($link, $str);
}
}
11 changes: 7 additions & 4 deletions libraries/plugins/export/ExportSql.php
Expand Up @@ -2411,10 +2411,13 @@ public function exportData(
} else {
// something else -> treat as a string
$values[] = '\''
. str_replace(
$search,
$replace,
Util::sqlAddSlashes($row[$j])
. $GLOBALS['dbi']->escapeString(
$GLOBALS['dbi']->getLink(),
str_replace(
$search,
$replace,
Util::sqlAddSlashes($row[$j])
)
)
. '\'';
} // end if
Expand Down

0 comments on commit 22eaf18

Please sign in to comment.