mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02: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:
parent
86f5a31e5b
commit
260e0e9bd3
3 changed files with 19 additions and 1 deletions
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)
|
Loading…
Add table
Add a link
Reference in a new issue