From: Popa Adrian Marius Date: Wed, 28 Dec 2011 18:52:39 +0000 (+0000) Subject: Added test case for PDO_Firebird: bug 53280 segfaults if query column count is less... X-Git-Tag: php-5.3.9~24 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c4c248c6e7b7f6fba57ef3355acf1d5c49ce5093;p=php Added test case for PDO_Firebird: bug 53280 segfaults if query column count is less than param count --- diff --git a/ext/pdo_firebird/tests/bug_53280.phpt b/ext/pdo_firebird/tests/bug_53280.phpt new file mode 100644 index 0000000000..48fe483bb9 --- /dev/null +++ b/ext/pdo_firebird/tests/bug_53280.phpt @@ -0,0 +1,63 @@ +--TEST-- +PDO_Firebird: bug 53280 segfaults if query column count is less than param count +--SKIPIF-- + +--FILE-- +exec('DROP TABLE testz'); +$dbh->exec('CREATE TABLE testz(A VARCHAR(30), B VARCHAR(30), C VARCHAR(30))'); +$dbh->exec("INSERT INTO test VALUES ('A', 'B', 'C')"); +$dbh->commit(); + +$stmt1 = "SELECT B FROM test WHERE A = ? AND B = ?"; +$stmt2 = "SELECT B, C FROM test WHERE A = ? AND B = ?"; + +$stmth2 = $dbh->prepare($stmt2); +$stmth2->execute(array('A', 'B')); +$rows = $stmth2->fetchAll(); // <------ OK +var_dump($rows); + +$stmth1 = $dbh->prepare($stmt1); +$stmth1->execute(array('A', 'B')); +$rows = $stmth1->fetchAll(); // <------- segfault +var_dump($rows); + +$stmt = $dbh->prepare('DELETE FROM testz'); +$stmt->execute(); + +$dbh->commit(); + +$dbh->exec('DROP TABLE testz'); + +unset($stmt); +unset($dbh); + +?> +--EXPECT-- +array(1) { + [0]=> + array(4) { + ["B"]=> + string(1) "B" + [0]=> + string(1) "B" + ["C"]=> + string(1) "C" + [1]=> + string(1) "C" + } +} +array(1) { + [0]=> + array(2) { + ["B"]=> + string(1) "B" + [0]=> + string(1) "B" + } +}