Commit 1f397a9488c for php.net
commit 1f397a9488c0a7f7f56450f8fa8eb0a952c941f8
Merge: 6e14f88bb4b 0b0784a66e4
Author: Ilia Alshanetsky <ilia@ilia.ws>
Date: Wed Sep 16 09:03:40 2026 -0400
Merge branch 'PHP-8.5'
* PHP-8.5:
ext/sqlite3: reject close() from inside a callback
diff --cc NEWS
index bbac9779425,76e317006c0..220ecbfb11f
--- a/NEWS
+++ b/NEWS
@@@ -40,16 -34,12 +40,20 @@@ PH
- PGSQL:
. Fixed pg_lo_write() rejecting data containing null bytes. (Ilia Alshanetsky)
+- SPL:
+ . Fixed bug GH-23385 (SplDoublyLinkedList::serialize() use-after-free when
+ __serialize() removes an element). (David Carlier)
+
+ - SQLite:
+ . Fixed a crash when SQLite3::close() is called from a userland callback.
+ (Ilia Alshanetsky)
+
+- Standard:
+ . Fixed bug #60110 (fclose(), file_put_contents(), copy() do not return false
+ properly). (Jakub Zelenka, Ilija Tovilo)
+
-24 Sep 2026, PHP 8.5.11
+10 Sep 2026, PHP 8.6.0beta3
- BCMath:
. Fixed out-of-bounds read in bc_is_zero_for_scale() when scale exceeds
diff --cc ext/sqlite3/sqlite3.c
index 45918923c1c,c6898aedc1b..4698fe5cd09
--- a/ext/sqlite3/sqlite3.c
+++ b/ext/sqlite3/sqlite3.c
@@@ -184,9 -190,15 +184,13 @@@ PHP_METHOD(SQLite3, close
int errcode;
db_obj = Z_SQLITE3_DB_P(object);
- if (zend_parse_parameters_none() == FAILURE) {
- RETURN_THROWS();
- }
+ ZEND_PARSE_PARAMETERS_NONE();
if (db_obj->initialised) {
+ if (db_obj->in_callback) {
+ zend_throw_error(NULL, "Cannot close SQLite3 database while inside a callback");
+ RETURN_THROWS();
+ }
zend_llist_clean(&(db_obj->free_list));
if(db_obj->db) {
errcode = sqlite3_close(db_obj->db);