Skip to content

Commit 40bf011

Browse files
committed
Merge tag 'php-8.4.6' into was-8.4.x
Tag for php-8.4.6
2 parents a1e059a + 8dfa832 commit 40bf011

File tree

137 files changed

+4364
-1946
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

137 files changed

+4364
-1946
lines changed

.circleci/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ jobs:
153153
`#--enable-werror`
154154
- run:
155155
name: make
156+
no_output_timeout: 30m
156157
command: make -j2 > /dev/null
157158
- run:
158159
name: make install

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
/ext/pdo_sqlite @SakiTakamachi
4545
/ext/pgsql @devnexen
4646
/ext/random @TimWolla @zeriyoshi
47+
/ext/reflection @DanielEScherzer
4748
/ext/session @Girgias
4849
/ext/simplexml @nielsdos
4950
/ext/soap @nielsdos
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
name: ./configure
2+
inputs:
3+
configurationParameters:
4+
default: ''
5+
required: false
6+
skipSlow:
7+
default: false
8+
required: false
9+
runs:
10+
using: composite
11+
steps:
12+
- shell: bash
13+
run: |
14+
set -x
15+
./buildconf --force
16+
./configure \
17+
--enable-option-checking=fatal \
18+
--prefix=/usr \
19+
--with-libdir=lib64 \
20+
--enable-phpdbg \
21+
--enable-fpm \
22+
--with-pdo-mysql=mysqlnd \
23+
--with-mysqli=mysqlnd \
24+
${{ inputs.skipSlow == 'false' && '--with-pgsql' || '' }} \
25+
${{ inputs.skipSlow == 'false' && '--with-pdo-pgsql' || '' }} \
26+
${{ inputs.skipSlow == 'false' && '--with-pdo-sqlite' || '' }} \
27+
--enable-intl \
28+
--without-pear \
29+
--enable-gd \
30+
--with-jpeg \
31+
--with-webp \
32+
--with-freetype \
33+
--with-xpm \
34+
--enable-exif \
35+
--with-zip \
36+
--with-zlib \
37+
--enable-soap \
38+
--enable-xmlreader \
39+
--with-xsl \
40+
${{ inputs.skipSlow == 'false' && '--with-tidy' || '' }} \
41+
--enable-sysvsem \
42+
--enable-sysvshm \
43+
--enable-shmop \
44+
--enable-pcntl \
45+
--with-readline \
46+
--enable-mbstring \
47+
--with-iconv \
48+
--with-curl \
49+
--with-gettext \
50+
--enable-sockets \
51+
--with-bz2 \
52+
--with-openssl \
53+
--with-gmp \
54+
--enable-bcmath \
55+
--enable-calendar \
56+
--enable-ftp \
57+
${{ inputs.skipSlow == 'false' && '--with-enchant=/usr' || '' }} \
58+
--enable-sysvmsg \
59+
--with-ffi \
60+
--enable-zend-test \
61+
${{ inputs.skipSlow == 'false' && '--enable-dl-test=shared' || '' }} \
62+
${{ inputs.skipSlow == 'false' && '--with-ldap' || '' }} \
63+
${{ inputs.skipSlow == 'false' && '--with-ldap-sasl' || '' }} \
64+
--with-password-argon2 \
65+
--with-mhash \
66+
--with-sodium \
67+
--enable-dba \
68+
--with-cdb \
69+
--enable-flatfile \
70+
--enable-inifile \
71+
--with-tcadb \
72+
--with-lmdb \
73+
--with-qdbm \
74+
${{ inputs.skipSlow == 'false' && '--with-snmp' || '' }} \
75+
${{ inputs.skipSlow == 'false' && '--with-unixODBC' || '' }} \
76+
${{ inputs.skipSlow == 'false' && '--with-pdo-odbc=unixODBC,/usr' || '' }} \
77+
--with-config-file-path=/etc \
78+
--with-config-file-scan-dir=/etc/php.d \
79+
${{ inputs.skipSlow == 'false' && '--with-pdo-dblib' || '' }} \
80+
--enable-werror \
81+
${{ inputs.configurationParameters }} || cat config.log
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Test
2+
inputs:
3+
runTestsParameters:
4+
default: ''
5+
required: false
6+
runs:
7+
using: composite
8+
steps:
9+
- shell: bash
10+
run: |
11+
set -x
12+
# XXX: Set up other database tests?
13+
# XXX: These tests are not running containerized
14+
export MYSQL_TEST_USER=ci
15+
export MYSQL_TEST_PASSWD=ci
16+
if [[ -z "$PDO_MYSQL_TEST_DSN" ]]; then
17+
export PDO_MYSQL_TEST_DSN="mysql:host=localhost;dbname=test"
18+
fi
19+
export PDO_MYSQL_TEST_USER=ci
20+
export PDO_MYSQL_TEST_PASS=ci
21+
export PGSQL_TEST_CONNSTR="host=localhost dbname=test port=5432 user=ci password=ci"
22+
if [[ -z "$PDO_PGSQL_TEST_DSN" ]]; then
23+
export PDO_PGSQL_TEST_DSN="pgsql:host=localhost port=5432 dbname=test user=ci password=ci"
24+
fi
25+
# Slow tests criteron is doubled because this runner isn't as fast as others
26+
export SKIP_IO_CAPTURE_TESTS=1
27+
export STACK_LIMIT_DEFAULTS_CHECK=1
28+
sapi/cli/php run-tests.php -P -q ${{ inputs.runTestsParameters }} \
29+
-j$(nproc) \
30+
-g FAIL,BORK,LEAK,XLEAK \
31+
--no-progress \
32+
--show-diff \
33+
--show-slow 2000 \
34+
--set-timeout 120

.github/workflows/nightly.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ on:
1717
run_alpine:
1818
required: true
1919
type: boolean
20+
run_linux_ppc64:
21+
required: true
22+
type: boolean
2023
run_macos_arm64:
2124
required: true
2225
type: boolean
@@ -35,6 +38,44 @@ on:
3538
permissions:
3639
contents: read
3740
jobs:
41+
LINUX_PPC64:
42+
if: inputs.run_linux_ppc64
43+
name: LINUX_PPC64_ASAN_UBSAN_DEBUG_ZTS
44+
# This runs on a self-hosted runner; see https://wiki.php.net/systems/ci
45+
runs-on: [self-hosted, gentoo, ppc64]
46+
steps:
47+
- name: git checkout
48+
uses: actions/checkout@v4
49+
with:
50+
ref: ${{ inputs.branch }}
51+
- name: System info
52+
run: |
53+
echo "::group::Show host CPU info"
54+
lscpu
55+
echo "::endgroup::"
56+
echo "::group::Show installed packages"
57+
cat /var/lib/portage/world
58+
echo "::endgroup::"
59+
- name: ./configure
60+
uses: ./.github/actions/configure-gentoo
61+
with:
62+
configurationParameters: >-
63+
CFLAGS="-fsanitize=undefined,address -fno-sanitize=function -DZEND_TRACK_ARENA_ALLOC"
64+
LDFLAGS="-fsanitize=undefined,address -fno-sanitize=function"
65+
CC=clang-17
66+
CXX=clang++-17
67+
--enable-debug
68+
--enable-zts
69+
skipSlow: false # FIXME: This should likely include slow extensions
70+
- name: make
71+
run: make -j$(/usr/bin/nproc) >/dev/null
72+
# Skip an install action for now
73+
- name: Tests
74+
uses: ./.github/actions/test-gentoo
75+
# There is no PPC JIT, so rip this out
76+
with:
77+
runTestsParameters: >-
78+
--asan -x
3879
ALPINE:
3980
if: inputs.run_alpine
4081
name: ALPINE_X64_ASAN_UBSAN_DEBUG_ZTS

.github/workflows/push.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ jobs:
140140
name: LINUX_X32_DEBUG_ZTS
141141
runs-on: ubuntu-latest
142142
container:
143-
image: ubuntu:20.04
143+
image: ubuntu:22.04
144144
env:
145145
MYSQL_TEST_HOST: mysql
146146
PDO_MYSQL_TEST_DSN: mysql:host=mysql;dbname=test

.github/workflows/root.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,16 @@ jobs:
4848
with:
4949
asan_ubuntu_version: ${{
5050
(((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 5) || matrix.branch.version[0] >= 9) && '24.04')
51-
|| '20.04' }}
51+
|| '22.04' }}
5252
branch: ${{ matrix.branch.ref }}
5353
community_verify_type_inference: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
5454
libmysqlclient_with_mysqli: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1) }}
5555
run_alpine: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
56+
run_linux_ppc64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
5657
run_macos_arm64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
5758
ubuntu_version: ${{
5859
(((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 5) || matrix.branch.version[0] >= 9) && '24.04')
59-
|| ((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 3) && '22.04')
60-
|| '20.04' }}
60+
|| '22.04' }}
6161
windows_version: ${{ ((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9) && '2022' || '2019' }}
6262
skip_symfony: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}
6363
skip_wordpress: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
# Libtool library files generated during build process
3030
*.la
3131

32+
# Mac shared library files generated during build process
33+
*.dylib
34+
3235
# Directories created by Libtool for storing generated library files
3336
.libs/
3437

NEWS

Lines changed: 98 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,96 @@
11
PHP NEWS
22
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3-
13 Mar 2025, PHP 8.4.5
3+
10 Apr 2025, PHP 8.4.6
4+
5+
- BCMath:
6+
. Fixed pointer subtraction for scale. (SakiTakamachi)
7+
8+
- Core:
9+
. Fixed property hook backing value access in multi-level inheritance.
10+
(ilutov)
11+
. Fixed accidentally inherited default value in overridden virtual properties.
12+
(ilutov)
13+
. Fixed bug GH-17376 (Broken JIT polymorphism for property hooks added to
14+
child class). (ilutov)
15+
. Fixed bug GH-17913 (ReflectionFunction::isDeprecated() returns incorrect
16+
results for closures created from magic __call()). (timwolla)
17+
. Fixed bug GH-17941 (Stack-use-after-return with lazy objects and hooks).
18+
(nielsdos)
19+
. Fixed bug GH-17988 (Incorrect handling of hooked props without get hook in
20+
get_object_vars()). (ilutov)
21+
. Fixed bug GH-17998 (Skipped lazy object initialization on primed
22+
SIMPLE_WRITE cache). (ilutov)
23+
. Fixed bug GH-17998 (Assignment to backing value in set hook of lazy proxy
24+
calls hook again). (ilutov)
25+
. Fixed bug GH-17961 (use-after-free during dl()'ed module class destruction).
26+
(Arnaud)
27+
. Fixed bug GH-15367 (dl() of module with aliased class crashes in shutdown).
28+
(Arnaud)
29+
. Fixed OSS-Fuzz #403308724. (nielsdos)
30+
. Fixed bug GH-13193 again (Significant performance degradation in 'foreach').
31+
(nielsdos)
32+
33+
- DBA:
34+
. Fixed assertion violation when opening the same file with dba_open
35+
multiple times. (chschneider)
36+
37+
- DOM:
38+
. Fixed bug GH-17991 (Assertion failure dom_attr_value_write). (nielsdos)
39+
. Fix weird unpack behaviour in DOM. (nielsdos)
40+
. Fixed bug GH-18090 (DOM: Svg attributes and tag names are being lowercased).
41+
(nielsdos)
42+
. Fix xinclude destruction of live attributes. (nielsdos)
43+
44+
- Fuzzer:
45+
. Fixed bug GH-18081 (Memory leaks in error paths of fuzzer SAPI).
46+
(Lung-Alexandra)
47+
48+
- GD:
49+
. Fixed bug GH-17984 (calls with arguments as array with references).
50+
(David Carlier)
51+
52+
- LDAP:
53+
. Fixed bug GH-18015 (Error messages for ldap_mod_replace are confusing).
54+
(nielsdos)
55+
56+
- Mbstring:
57+
. Fixed bug GH-17989 (mb_output_handler crash with unset
58+
http_output_conv_mimetypes). (nielsdos)
59+
60+
- Opcache:
61+
. Fixed bug GH-15834 (Segfault with hook "simple get" cache slot and minimal
62+
JIT). (nielsdos)
63+
. Fixed bug GH-17966 (Symfony JIT 1205 assertion failure). (nielsdos)
64+
. Fixed bug GH-18037 (SEGV Zend/zend_execute.c). (nielsdos)
65+
. Fixed bug GH-18050 (IN_ARRAY optimization in DFA pass is broken). (ilutov)
66+
. Fixed bug GH-18113 (stack-buffer-overflow ext/opcache/jit/ir/ir_sccp.c).
67+
(nielsdos)
68+
. Fixed bug GH-18112 (NULL access with preloading and INI option). (nielsdos)
69+
. Fixed bug GH-18107 (Opcache CFG jmp optimization with try-finally breaks
70+
the exception table). (nielsdos)
71+
72+
- PDO:
73+
. Fix memory leak when destroying PDORow. (nielsdos)
74+
75+
- Standard:
76+
. Fix memory leaks in array_any() / array_all(). (nielsdos)
77+
78+
- SOAP:
79+
. Fixed bug #66049 (Typemap can break parsing in parse_packet_soap leading to
80+
a segfault) . (Remi)
81+
82+
- SPL:
83+
. Fixed bug GH-18018 (RC1 data returned from offsetGet causes UAF in
84+
ArrayObject). (nielsdos)
85+
86+
- Treewide:
87+
. Fixed bug GH-17736 (Assertion failure zend_reference_destroy()). (nielsdos)
88+
89+
- Windows:
90+
. Fixed bug GH-17836 (zend_vm_gen.php shouldn't break on Windows line
91+
endings). (DanielEScherzer)
92+
93+
27 Feb 2025, PHP 8.4.5
494

595
- BCMath:
696
. Fixed bug GH-17398 (bcmul memory leak). (SakiTakamachi)
@@ -32,10 +122,6 @@ PHP NEWS
32122
. Fixed bug GH-17847 (xinclude destroys live node). (nielsdos)
33123
. Fix using Dom\Node with Dom\XPath callbacks. (nielsdos)
34124

35-
- GD:
36-
. Fixed bug GH-17703 (imagescale with both width and height negative values
37-
triggers only an Exception on width). (David Carlier)
38-
39125
- FFI:
40126
. Fix FFI Parsing of Pointer Declaration Lists. (davnotdev)
41127

@@ -44,6 +130,8 @@ PHP NEWS
44130
(Jakub Zelenka)
45131

46132
- GD:
133+
. Fixed bug GH-17703 (imagescale with both width and height negative values
134+
triggers only an Exception on width). (David Carlier)
47135
. Fixed bug GH-17772 (imagepalettetotruecolor crash with memory_limit=2M).
48136
(David Carlier)
49137

@@ -97,7 +185,7 @@ PHP NEWS
97185
- Streams:
98186
. Fixed bug GH-17650 (realloc with size 0 in user_filters.c). (nielsdos)
99187
. Fix memory leak on overflow in _php_stream_scandir(). (nielsdos)
100-
. Fixed GHSA-hgf54-96fm-v528 (Stream HTTP wrapper header check might omit
188+
. Fixed GHSA-hgf5-96fm-v528 (Stream HTTP wrapper header check might omit
101189
basic auth header). (CVE-2025-1736) (Jakub Zelenka)
102190
. Fixed GHSA-52jp-hrpf-2jff (Stream HTTP wrapper truncate redirect location
103191
to 1024 bytes). (CVE-2025-1861) (Jakub Zelenka)
@@ -107,7 +195,7 @@ PHP NEWS
107195
handle folded headers). (CVE-2025-1217) (Jakub Zelenka)
108196

109197
- Windows:
110-
. Fixed phpize for Windows 11 (24H2). (Bob)
198+
. Fixed phpize for Windows 11 (24H2). (bwoebi)
111199
. Fixed GH-17855 (CURL_STATICLIB flag set even if linked with shared lib).
112200
(cmb)
113201

@@ -117,7 +205,7 @@ PHP NEWS
117205
. Fix memory leak when encoding check fails. (nielsdos)
118206
. Fix zlib support for large files. (nielsdos)
119207

120-
30 Jan 2025, PHP 8.4.4
208+
13 Feb 2025, PHP 8.4.4
121209

122210
- Core:
123211
. Fixed bug GH-17234 (Numeric parent hook call fails with assertion).
@@ -236,7 +324,7 @@ PHP NEWS
236324
. Fixed bug GH-17139 (Fix zip_entry_name() crash on invalid entry).
237325
(nielsdos)
238326

239-
02 Jan 2025, PHP 8.4.3
327+
16 Jan 2025, PHP 8.4.3
240328

241329
- BcMath:
242330
. Fixed bug GH-17049 (Correctly compare 0 and -0). (Saki Takamachi)
@@ -365,7 +453,7 @@ PHP NEWS
365453
- XML:
366454
. Fixed bug GH-1718 (unreachable program point in zend_hash). (nielsdos)
367455

368-
05 Dec 2024, PHP 8.4.2
456+
19 Dec 2024, PHP 8.4.2
369457

370458
- BcMath:
371459
. Fixed bug GH-16978 (Avoid unnecessary padding with leading zeros).

0 commit comments

Comments
 (0)