From 0f182c2495f3aa84aed76485a4406b383c77c785 Mon Sep 17 00:00:00 2001 From: Matteo Beccati Date: Sun, 10 Jul 2016 14:36:07 +0200 Subject: Fixed bug #72570 Segmentation fault when binding parameters on a query without placeholders Special commit for 7.0.9 --- ext/pdo_pgsql/pgsql_statement.c | 3 +++ ext/pdo_pgsql/tests/bug72570.phpt | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 ext/pdo_pgsql/tests/bug72570.phpt diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index ee06cfc439..c32a81a87a 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 0000000000..e52efd93bb --- /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-- + +--FILE-- +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + +$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); + +$stmt = $db->prepare("SELECT 1"); + +try { + var_dump($stmt->execute([1])); +} catch (PDOException $e) { + var_dump($e->getCode()); +} + +?> +--EXPECT-- +bool(false) -- cgit v1.2.1