com php-src: Fixed bug #72570 Segmentation fault when binding parameters on a query without placeholders: NEWS ext/pdo_pgsql/pgsql_stat ement.c
ext/pdo_pgsql/tests/bug72570.phpt

From: Date: Sun, 10 Jul 2016 12:36:07 +0000
Subject: com php-src: Fixed bug #72570 Segmentation fault when binding parameters on a query without placeholders: NEWS ext/pdo_pgsql/pgsql_stat ement.c
ext/pdo_pgsql/tests/bug72570.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-92899@lists.php.net to get a copy of this message
Commit: 4d677ae0e2465188f59ec9226ee16011692286c8 Author: Matteo Beccati <mbeccati@php.net> Sun, 10 Jul 2016 14:36:07 +0200 Parents: 11d74b5b7977394f4dd02a8d6af34de10722beda Branches: PHP-7.0 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=4d677ae0e2465188f59ec9226ee16011692286c8 Log: Fixed bug #72570 Segmentation fault when binding parameters on a query without placeholders Bugs: https://bugs.php.net/72570 Changed paths: M NEWS M ext/pdo_pgsql/pgsql_statement.c A ext/pdo_pgsql/tests/bug72570.phpt Diff: diff --git a/NEWS b/NEWS index 91b1b64..9af6d5a 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,8 @@ PHP NEWS - PDO_pgsql: . Fixed bug #70313 (PDO statement fails to throw exception). (Matteo) + . Fixed bug #72570 (Segmentation fault when binding parameters on a query + without placeholders). (Matteo) - SPL: . Fixed bug #55701 (GlobIterator throws LogicException). (Valentin VĂLCIU) diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index 517a597...a5ee2e9 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -292,6 +292,9 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * break; case PDO_PARAM_EVT_ALLOC: + if (!stmt->bound_param_map) { + return 1; + } if (!zend_hash_index_exists(stmt->bound_param_map, param->paramno)) { pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "parameter was not defined"); return 0; diff --git a/ext/pdo_pgsql/tests/bug72570.phpt b/ext/pdo_pgsql/tests/bug72570.phpt new file mode 100644 index 0000000..1ac68a3 --- /dev/null +++ b/ext/pdo_pgsql/tests/bug72570.phpt @@ -0,0 +1,28 @@ +--TEST-- +PDO PgSQL Bug #72570 (Segmentation fault when binding parameters on a query without placeholders) +--SKIPIF-- +<?php +if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded'); +require dirname(__FILE__) . '/config.inc'; +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); +$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + +$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); + +$stmt = $db->prepare("SELECT 1"); + +try { + $stmt->execute([1]); +} catch (PDOException $e) { + var_dump($e->getCode()); +} + +?> +--EXPECT-- +string(5) "08P01"

« previous php.cvs (#92899) next »