Skip to content

[pull] master from php:master - #1147

Merged
pull[bot] merged 8 commits into
turkdevops:masterfrom
php:master
Aug 3, 2026
Merged

[pull] master from php:master#1147
pull[bot] merged 8 commits into
turkdevops:masterfrom
php:master

Conversation

@pull

@pull pull Bot commented Aug 3, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

devnexen and others added 8 commits August 2, 2026 21:31
…utdown re-registration.

Fix GH-22818

During request shutdown the user_filter_map is torn down by the
user_filters RSHUTDOWN before the streams referencing it are flushed. A
user filter whose filter() callback re-registers the filter recreated the
now-NULL map, then, since the volatile factory was still present in
FG(stream_filters), deleted the freshly added entry and left an empty
orphaned map behind. The following stream_filter_append() located the
factory but no matching fdat, tripping ZEND_ASSERT(fdat), and the
recreated map leaked.

Register the volatile factory first and only create and populate
user_filter_map on success, so a re-registration during the shutdown
window fails without recreating the map. The existing NULL-map guard in
user_filter_factory_create() then handles the append gracefully.
The volatile factory registration above already rejects a duplicate filter
name, so the name cannot be in the map either. The add_new variant asserts
that invariant in debug builds.

Close GH-22838
shm_attach() wrote the requested size into the header of a segment it
did not create, so a foreign segment framed as larger than it is let
shm_put_var() write past the mapping. Take the size from shmctl()
IPC_STAT instead, and reject a segment too small to hold the header.

Noticed while reviewing GH-22959.
* PHP-8.4:
  ext/sysvshm: do not trust $size when opening an existing segment
* PHP-8.5:
  ext/sysvshm: do not trust $size when opening an existing segment
PHP_ADD_SOURCES([main/io], ...) adds the new I/O subsystem sources
(php_io.c, php_io_copy_*.c) to the build, but main/io was never added
to the PHP_ADD_BUILD_DIR list. Since only directories in that list get
pre-created for out-of-tree (VPATH) builds, main/io/ never existed in
such build trees, causing:

  fatal error: opening dependency file main/io/php_io_copy_freebsd.dep:
  No such file or directory

for every file in main/io/ when building outside the source tree
(e.g. Debian's separate fpm-build/cli-build directories).

Add main/io to PHP_ADD_BUILD_DIR, alongside the other source
directories (main, main/poll, main/streams, TSRM, Zend, ...).
As it is unused, the relevant error is handled before and _error_code is assigned ZPP_ERROR_FAILURE.
@pull pull Bot locked and limited conversation to collaborators Aug 3, 2026
@pull pull Bot added the ⤵️ pull label Aug 3, 2026
@pull
pull Bot merged commit bbf82d7 into turkdevops:master Aug 3, 2026
1 of 3 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants