svn: /pecl/mysqlnd_ms/trunk/tests/ mysqlnd_ms_charsets_pdo_fail.phpt
| From: | Ulf Wendel | Date: | Wed, 30 Jan 2013 16:34:12 +0000 |
| Subject: | svn: /pecl/mysqlnd_ms/trunk/tests/ mysqlnd_ms_charsets_pdo_fail.phpt | ||
| Groups: | php.pecl.cvs | ||
| Request: | Send a blank email to pecl-cvs+get-19366@lists.php.net to get a copy of this message | ||
uw Wed, 30 Jan 2013 16:34:12 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=329374
Log:
PDO and invalid charset bug 63886
Bug: https://bugs.php.net/63886 (Assigned) PHP crashes when
quoting string with PDO and using mysqlnd_ms
Changed paths:
A pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_charsets_pdo_fail.phpt
Added: pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_charsets_pdo_fail.phpt
===================================================================
--- pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_charsets_pdo_fail.phpt (rev 0)
+++ pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_charsets_pdo_fail.phpt 2013-01-30 16:34:12 UTC (rev
329374)
@@ -0,0 +1,82 @@
+--TEST--
+Charsets, invalid using PDO
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once("connect.inc");
+
+_skipif_check_extensions(array("mysqli"));
+_skipif_connect($master_host_only, $user, $passwd, $db, $master_port, $master_socket);
+_skipif_connect($slave_host_only, $user, $passwd, $db, $slave_port, $slave_socket);
+
+$settings = array(
+ "myapp" => array(
+ 'master' => array($master_host),
+ 'slave' => array($slave_host),
+ ),
+);
+if ($error = mst_create_config("test_mysqlnd_ms_charsets_pdo_fail.ini", $settings))
+ die(sprintf("SKIP %s\n", $error));
+
+function test_for_charset($host, $user, $passwd, $db, $port, $socket) {
+ if (!$link = mst_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ die(sprintf("skip Cannot connect, [%d] %s", mysqli_connect_errno(),
mysqli_connect_error()));
+
+ if (!($res = mysqli_query($link, 'SELECT version() AS server_version')) ||
+ !($tmp = mysqli_fetch_assoc($res))) {
+ mysqli_close($link);
+ die(sprintf("skip Cannot check server version, [%d] %s\n",
+ mysqli_errno($link), mysqli_error($link)));
+ }
+ mysqli_free_result($res);
+ $version = explode('.', $tmp['server_version']);
+ if (empty($version)) {
+ mysqli_close($link);
+ die(sprintf("skip Cannot check server version, based on '%s'",
+ $tmp['server_version']));
+ }
+
+ if ($version[0] <= 4 && $version[1] < 1) {
+ mysqli_close($link);
+ die(sprintf("skip Requires MySQL Server 4.1+\n"));
+ }
+
+ if (($res = mysqli_query($link, 'SHOW CHARACTER SET LIKE "pleasenot"',
MYSQLI_STORE_RESULT)) && (mysqli_num_rows($res) == 1)) {
+ die(sprintf("skip WOW, server has charset 'pleasenot'!\n"));
+ }
+
+ if (!$res = mysqli_query($link, 'SELECT @@character_set_connection AS charset'))
+ die(sprintf("skip Cannot select current charset, [%d] %s\n", $link->errno,
$link->error));
+
+ if (!$row = mysqli_fetch_assoc($res))
+ die(sprintf("skip Cannot detect current charset, [%d] %s\n", $link->errno,
$link->error));
+
+ return $row['charset'];
+}
+
+test_for_charset($master_host_only, $user, $passwd, $db, $master_port, $master_socket);
+test_for_charset($slave_host_only, $user, $passwd, $db, $slave_port, $slave_socket);
+?>
+--INI--
+mysqlnd_ms.enable=1
+mysqlnd_ms.config_file=test_mysqlnd_ms_charsets_pdo_fail.ini
+--FILE--
+<?php
+ require_once("connect.inc");
+ require_once("util.inc");
+
+ $pdo = new PDO("mysql:host=myapp;dbname=" . $db . ";charset=pleasenot",
$user, $passwd);
+var_dump($pdo->quote("a"));
+ print "done!";
+
+?>
+--CLEAN--
+<?php
+ if (!unlink("test_mysqlnd_ms_charsets_pdo_fail.ini"))
+ printf("[clean] Cannot unlink ini file
'test_mysqlnd_ms_charsets_pdo_fail.ini'.\n");
+?>
+--XFAIL--
+Bug 63886 is the root cause, ms crash is a follow-up, waiting for mysqlnd fix
+--EXPECTF--
+connect error
+done!
\ No newline at end of file