[php-src] master: Merge branch 'PHP-8.6'
| From: | Gina Peter Banyard | Date: | Sat, 24 Oct 2026 16:44:20 +0000 |
| Subject: | [php-src] master: Merge branch 'PHP-8.6' | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-142685@lists.php.net to get a copy of this message | ||
Author: Gina Peter Banyard (Girgias)
Date: 2026-10-24T17:44:02+01:00
Commit: https://github.com/php/php-src/commit/9e9c53fa06a8570793548aac5fa03f6ee8425afb
Raw diff: https://github.com/php/php-src/commit/9e9c53fa06a8570793548aac5fa03f6ee8425afb.diff
Merge branch 'PHP-8.6'
* PHP-8.6:
dba: fix GH-24641 (NULL dereferencement with ndbm backend)
Changed paths:
A ext/dba/tests/gh24641.phpt
M ext/dba/dba_ndbm.c
Diff:
diff --git a/ext/dba/dba_ndbm.c b/ext/dba/dba_ndbm.c
index c60ab7e5f428..8fd563857fd5 100644
--- a/ext/dba/dba_ndbm.c
+++ b/ext/dba/dba_ndbm.c
@@ -51,6 +51,9 @@ DBA_OPEN_FUNC(ndbm)
}
dbf = dbm_open(ZSTR_VAL(info->path), gmode, filemode);
+ if (dbf == NULL) {
+ return FAILURE;
+ }
pinfo->dbf = dbf;
return SUCCESS;
diff --git a/ext/dba/tests/gh24641.phpt b/ext/dba/tests/gh24641.phpt
new file mode 100644
index 000000000000..e7479b64333c
--- /dev/null
+++ b/ext/dba/tests/gh24641.phpt
@@ -0,0 +1,30 @@
+--TEST--
+GH-24641 (ndbm backend never checks dbm_open() return value, NULL deref on first use after a failed
open)
+--EXTENSIONS--
+dba
+--FILE--
+<?php
+
+file_put_contents(__DIR__ . '/gh24641', 'not a valid ndbm/gdbm database, just plain
text');
+
+foreach (dba_handlers() as $handler) {
+ /* Suppress warnings */
+ $db = @dba_open(__DIR__ . '/gh24641', 'r', $handler);
+ /* Expected as this file is not a proper db file */
+ if ($db === false) {
+ continue;
+ }
+ /* Some drivers just don't care */
+ dba_firstkey($db); // SEGV
+ dba_close($db);
+}
+
+?>
+DONE
+--CLEAN--
+<?php
+@unlink(__DIR__ . '/gh24641');
+@unlink(__DIR__ . '/gh24641-lock');
+?>
+--EXPECT--
+DONE