Skip to content

[pull] master from php:master#819

Merged
pull[bot] merged 4 commits intoturkdevops:masterfrom
php:master
Mar 27, 2026
Merged

[pull] master from php:master#819
pull[bot] merged 4 commits intoturkdevops:masterfrom
php:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull bot commented Mar 27, 2026

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 : )

orlitzky and others added 4 commits March 27, 2026 16:27
When libphp.so (from the embed SAPI, or the apache module) is loaded
by another project that already uses libmagic, the symbols from the
two copies of libmagic...

  $ objdump -TC ./libs/libphp.so | grep '\smagic_'
  00000000002b2754 g  DF .text	0000000000000034  Base  magic_compile
  00000000002b25fe g  DF .text	0000000000000024  Base  magic_open
  00000000002b27f0 g  DF .text	0000000000000034  Base  magic_descriptor
  00000000002b2720 g  DF .text	0000000000000034  Base  magic_load
  00000000002b2c1a g  DF .text	0000000000000032  Base  magic_setflags
  00000000002b27bc g  DF .text	0000000000000034  Base  magic_list
  00000000002b2c62 g  DF .text	0000000000000206  Base  magic_setparam
  00000000002b2bf4 g  DF .text	0000000000000026  Base  magic_getflags
  00000000002b2bbe g  DF .text	0000000000000036  Base  magic_errno
  00000000002b2e68 g  DF .text	00000000000001f4  Base  magic_getparam
  00000000002b2b14 g  DF .text	000000000000006e  Base  magic_buffer
  00000000002b2b82 g  DF .text	000000000000003c  Base  magic_error
  00000000002b2788 g  DF .text	0000000000000034  Base  magic_check
  00000000002b2c4c g  DF .text	0000000000000016  Base  magic_version
  00000000002b26fa g  DF .text	0000000000000026  Base  magic_close
  00000000002b2858 g  DF .text	0000000000000034  Base  magic_stream
  00000000002b2824 g  DF .text	0000000000000034  Base  magic_file

can clash. To see this, we (pointlessly) link libphp.so from the
embed SAPI into a small program using the system copy of libmagic:

  $ gcc $(/usr/lib/php8.5/bin/php-config --includes) main.c \
    -L/usr/lib/php8.5/lib -lphp -lmagic
  $ LD_LIBRARY_PATH=/usr/lib/php8.5/lib ./a.out
  Segmentation fault         LD_LIBRARY_PATH=/usr/lib/php8.5/lib ./a.out

To avoid this, we modify the internal "file_public" macro used by
libmagic, so that (on platforms that support it) hidden visibility is
used instead of the default. Afterwards the objdump command above
produces no output, and the test program no longer sefaults.

Co-authored-by:  Ilija Tovilo <ilija.tovilo@me.com>
PHP-bug: https://bugs.php.net/bug.php?id=66095
Gentoo-bug: https://bugs.gentoo.org/471682

Fixes #66095
Closes GH-21472
> Uncaught Error: Cannot indirectly modify readonly property ClassInfo::$constInfos in gen_stub.php:4158
@pull pull bot locked and limited conversation to collaborators Mar 27, 2026
@pull pull bot added the ⤵️ pull label Mar 27, 2026
@pull pull bot merged commit 9cb1150 into turkdevops:master Mar 27, 2026
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