]> granicus.if.org Git - php/commit
Fix bug #72413: Segfault with get_result and PS cursors
authorDharman <tekiela246@gmail.com>
Thu, 17 Sep 2020 11:35:26 +0000 (12:35 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 29 Oct 2020 15:34:08 +0000 (16:34 +0100)
commitb5481defe64c991d0e4307372d69c0ea3cd83378
tree511eed68cd1042f51647de29b8351b6e21acc4bd
parent0044a81fbbe0807158a626c4c5a4d8f4d379247f
Fix bug #72413: Segfault with get_result and PS cursors

We cannot simply switch to use_result here, because the fetch_row
methods in get_result mode and in use_result/store_result mode
are different: In one case it accepts a statement, in the other
a return value zval. Thus, doing a switch to use_result results
in a segfault when trying to fetch a row.

Actually supporting get_result with cursors would require adding
cursor support in mysqlnd_result, not just mysqlnd_ps. That would
be a significant amount of effort and, given the age of the issue,
does not appear to be particularly likely to happen soon.

As such, we simply generate an error when using get_result()
with cursors, which is much better than causing a segfault.
Instead, parameter binding needs to be used.
NEWS
ext/mysqli/tests/mysqli_stmt_get_result.phpt
ext/mysqlnd/mysqlnd_ps.c