mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Fix GH-17837: ::getColumnMeta() on unexecuted statement segfaults
We cannot properly get the column meta data of a statement which has been prepared, but has not yet been executed. As such we bail out early, reporting failure. Closes GH-17850.
This commit is contained in:
4
NEWS
4
NEWS
@@ -40,6 +40,10 @@ PHP NEWS
|
||||
JIT crash). (nielsdos)
|
||||
. Fixed bug GH-17577 (JIT packed type guard crash). (nielsdos, Dmitry)
|
||||
|
||||
- PDO_SQLite:
|
||||
. Fixed GH-17837 ()::getColumnMeta() on unexecuted statement segfaults).
|
||||
(cmb)
|
||||
|
||||
- Phar:
|
||||
. Fixed bug GH-17808: PharFileInfo refcount bug. (nielsdos)
|
||||
|
||||
|
||||
@@ -305,7 +305,7 @@ static int pdo_sqlite_stmt_col_meta(pdo_stmt_t *stmt, zend_long colno, zval *ret
|
||||
const char *str;
|
||||
zval flags;
|
||||
|
||||
if (!S->stmt) {
|
||||
if (!S->stmt || !stmt->executed) {
|
||||
return FAILURE;
|
||||
}
|
||||
if(colno >= sqlite3_column_count(S->stmt)) {
|
||||
|
||||
14
ext/pdo_sqlite/tests/gh17837.phpt
Normal file
14
ext/pdo_sqlite/tests/gh17837.phpt
Normal file
@@ -0,0 +1,14 @@
|
||||
--TEST--
|
||||
GH-17837 (::getColumnMeta() on unexecuted statement segfaults)
|
||||
--EXTENSIONS--
|
||||
pdo_sqlite
|
||||
--CREDITS--
|
||||
YuanchengJiang
|
||||
--FILE--
|
||||
<?php
|
||||
$db = new PDO('sqlite::memory:');
|
||||
$stmt = $db->prepare('select :a, :b, ?');
|
||||
var_dump($stmt->getColumnMeta(0));
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
Reference in New Issue
Block a user