diff options
| author | Antony Dovgal <tony2001@php.net> | 2006-03-17 22:15:57 +0000 |
|---|---|---|
| committer | Antony Dovgal <tony2001@php.net> | 2006-03-17 22:15:57 +0000 |
| commit | 7731dc942153b425956988072c8cc47c4a01c8d8 (patch) | |
| tree | db91b4b880e3f1f764492dc0bbf76b98b0642c3b /ext/pdo_pgsql | |
| parent | 63b3f5c0419fdd05053e0a2ecfb14833984a92a1 (diff) | |
| download | php-git-7731dc942153b425956988072c8cc47c4a01c8d8.tar.gz | |
fix #36727 (segfault in pdo_pgsql bindValue() when no parameters are defined)
Diffstat (limited to 'ext/pdo_pgsql')
| -rw-r--r-- | ext/pdo_pgsql/pgsql_statement.c | 2 | ||||
| -rw-r--r-- | ext/pdo_pgsql/tests/bug36727.phpt | 23 |
2 files changed, 24 insertions, 1 deletions
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index df0eb1ec2c..02418fa140 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -229,7 +229,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * } else { /* resolve parameter name to rewritten name */ char *nameptr; - if (SUCCESS == zend_hash_find(stmt->bound_param_map, + if (stmt->bound_param_map && SUCCESS == zend_hash_find(stmt->bound_param_map, param->name, param->namelen + 1, (void**)&nameptr)) { param->paramno = atoi(nameptr + 1) - 1; } else { diff --git a/ext/pdo_pgsql/tests/bug36727.phpt b/ext/pdo_pgsql/tests/bug36727.phpt new file mode 100644 index 0000000000..c6f7c8a80f --- /dev/null +++ b/ext/pdo_pgsql/tests/bug36727.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #36727 (segfault in bindValue() when no parameters are defined) +--SKIPIF-- +<?php +if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded'); +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +require dirname(__FILE__) . '/config.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +require dirname(__FILE__) . '/config.inc'; +$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); + +$stmt = $db->prepare('SELECT * FROM child'); +var_dump($stmt->bindValue(':test', 1, PDO::PARAM_INT)); + +echo "Done\n"; +?> +--EXPECT-- +bool(false) +Done |
