diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2020-09-28 22:59:51 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2020-09-28 22:59:51 +0200 |
commit | 99b3631e9a5e64b81d304b87dcec25320b90bbe4 (patch) | |
tree | 4c8b0c4c2bbeb61fb45327164b6cac23e5f49f09 | |
parent | f722512c4ad02cb0696ea8ea776aef5a709dcdbb (diff) | |
parent | f1d8395c773854c5d8a2a39241750e636e95d92c (diff) | |
download | php-git-99b3631e9a5e64b81d304b87dcec25320b90bbe4.tar.gz |
Merge branch 'PHP-7.4' into master
* PHP-7.4:
Fix #67465: NULL Pointer dereference in odbc_handle_preparer
-rw-r--r-- | ext/pdo_odbc/odbc_driver.c | 3 | ||||
-rw-r--r-- | ext/pdo_odbc/tests/bug67465.phpt | 17 |
2 files changed, 19 insertions, 1 deletions
diff --git a/ext/pdo_odbc/odbc_driver.c b/ext/pdo_odbc/odbc_driver.c index 5631da7a36..9a254553d5 100644 --- a/ext/pdo_odbc/odbc_driver.c +++ b/ext/pdo_odbc/odbc_driver.c @@ -177,6 +177,8 @@ static int odbc_handle_preparer(pdo_dbh_t *dbh, const char *sql, size_t sql_len, return 0; } + stmt->driver_data = S; + cursor_type = pdo_attr_lval(driver_options, PDO_ATTR_CURSOR, PDO_CURSOR_FWDONLY); if (cursor_type != PDO_CURSOR_FWDONLY) { rc = SQLSetStmtAttr(S->stmt, SQL_ATTR_CURSOR_SCROLLABLE, (void*)SQL_SCROLLABLE, 0); @@ -195,7 +197,6 @@ static int odbc_handle_preparer(pdo_dbh_t *dbh, const char *sql, size_t sql_len, efree(nsql); } - stmt->driver_data = S; stmt->methods = &odbc_stmt_methods; if (rc != SQL_SUCCESS) { diff --git a/ext/pdo_odbc/tests/bug67465.phpt b/ext/pdo_odbc/tests/bug67465.phpt new file mode 100644 index 0000000000..872ca45c50 --- /dev/null +++ b/ext/pdo_odbc/tests/bug67465.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #67465 (NULL Pointer dereference in odbc_handle_preparer) +--SKIPIF-- +<?php +if (!extension_loaded('pdo_odbc')) die('skip pdo_odbc extension not available'); +require 'ext/pdo/tests/pdo_test.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php +require 'ext/pdo/tests/pdo_test.inc'; +$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); +$db->prepare("SELECT 1", [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]); +echo "done\n"; +?> +--EXPECT-- +done |