Skip to content

Commit 08b0b29

Browse files
committed
Merge tag 'php-8.3.24' into was-8.3.x
Tag for php-8.3.24
2 parents 6b7a361 + 4d0d451 commit 08b0b29

File tree

82 files changed

+1095
-249
lines changed

Some content is hidden

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

82 files changed

+1095
-249
lines changed

.github/actions/freebsd/action.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
name: FreeBSD
2+
inputs:
3+
configurationParameters:
4+
default: ''
5+
required: false
26
runs:
37
using: composite
48
steps:
@@ -79,7 +83,9 @@ runs:
7983
--with-mhash \
8084
--with-sodium \
8185
--with-config-file-path=/etc \
82-
--with-config-file-scan-dir=/etc/php.d
86+
--with-config-file-scan-dir=/etc/php.d \
87+
${{ inputs.configurationParameters }}
88+
8389
gmake -j2
8490
mkdir /etc/php.d
8591
gmake install > /dev/null

.github/scripts/windows/build.bat

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ if not exist "%SDK_RUNNER%" (
4343
exit /b 3
4444
)
4545

46-
cmd /c %SDK_RUNNER% -t .github\scripts\windows\build_task.bat
46+
for /f "delims=" %%T in ('call .github\scripts\windows\find-vs-toolset.bat %PHP_BUILD_CRT%') do set "VS_TOOLSET=%%T"
47+
echo Got VS Toolset %VS_TOOLSET%
48+
cmd /c %SDK_RUNNER% -s %VS_TOOLSET% -t .github\scripts\windows\build_task.bat
4749
if %errorlevel% neq 0 exit /b 3
4850

4951
exit /b 0
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
@echo off
2+
3+
setlocal enabledelayedexpansion
4+
5+
if "%~1"=="" (
6+
echo ERROR: Usage: %~nx0 [vc14^|vc15^|vs16^|vs17]
7+
exit /b 1
8+
)
9+
10+
set "toolsets_vc14=14.0"
11+
set "toolsets_vc15="
12+
set "toolsets_vs16="
13+
set "toolsets_vs17="
14+
15+
16+
for /f "usebackq tokens=*" %%I in (`vswhere.exe -latest -find "VC\Tools\MSVC"`) do set "MSVCDIR=%%I"
17+
18+
if not defined MSVCDIR (
19+
echo ERROR: could not locate VC\Tools\MSVC
20+
exit /b 1
21+
)
22+
23+
for /f "delims=" %%D in ('dir /b /ad "%MSVCDIR%"') do (
24+
for /f "tokens=1,2 delims=." %%A in ("%%D") do (
25+
set "maj=%%A" & set "min=%%B"
26+
if "!maj!"=="14" (
27+
if !min! LEQ 9 (
28+
set "toolsets_vc14=%%D"
29+
) else if !min! LEQ 19 (
30+
set "toolsets_vc15=%%D"
31+
) else if !min! LEQ 29 (
32+
set "toolsets_vs16=%%D"
33+
) else (
34+
set "toolsets_vs17=%%D"
35+
)
36+
)
37+
)
38+
)
39+
40+
set "KEY=%~1"
41+
set "VAR=toolsets_%KEY%"
42+
call set "RESULT=%%%VAR%%%"
43+
if defined RESULT (
44+
echo %RESULT%
45+
exit /b 0
46+
) else (
47+
echo ERROR: no toolset found for %KEY%
48+
exit /b 1
49+
)

.github/scripts/windows/test.bat

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ if not exist "%SDK_RUNNER%" (
1111
exit /b 3
1212
)
1313

14-
cmd /c %SDK_RUNNER% -t .github\scripts\windows\test_task.bat
14+
for /f "delims=" %%T in ('call .github\scripts\windows\find-vs-toolset.bat %PHP_BUILD_CRT%') do set "VS_TOOLSET=%%T"
15+
cmd /c %SDK_RUNNER% -s %VS_TOOLSET% -t .github\scripts\windows\test_task.bat
1516
if %errorlevel% neq 0 exit /b 3
1617

1718
exit /b 0

.github/workflows/nightly.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,18 @@ on:
2323
run_macos_arm64:
2424
required: true
2525
type: boolean
26+
run_freebsd_zts:
27+
required: true
28+
type: boolean
2629
ubuntu_version:
2730
required: true
2831
type: string
2932
windows_version:
3033
required: true
3134
type: string
35+
vs_crt_version:
36+
required: true
37+
type: string
3238
skip_laravel:
3339
required: true
3440
type: boolean
@@ -1031,7 +1037,7 @@ jobs:
10311037
PHP_BUILD_OBJ_DIR: C:\obj
10321038
PHP_BUILD_CACHE_SDK_DIR: C:\build-cache\sdk
10331039
PHP_BUILD_SDK_BRANCH: php-sdk-2.3.0
1034-
PHP_BUILD_CRT: ${{ inputs.windows_version == '2022' && 'vs17' || 'vs16' }}
1040+
PHP_BUILD_CRT: ${{ inputs.vs_crt_version }}
10351041
PLATFORM: ${{ matrix.x64 && 'x64' || 'x86' }}
10361042
THREAD_SAFE: "${{ matrix.zts && '1' || '0' }}"
10371043
INTRINSICS: "${{ matrix.zts && 'AVX2' || '' }}"
@@ -1052,7 +1058,13 @@ jobs:
10521058
- name: Test
10531059
run: .github/scripts/windows/test.bat
10541060
FREEBSD:
1055-
name: FREEBSD
1061+
strategy:
1062+
fail-fast: false
1063+
matrix:
1064+
zts: [true, false]
1065+
exclude:
1066+
- zts: ${{ !inputs.run_freebsd_zts && true || '*never*' }}
1067+
name: "FREEBSD_${{ matrix.zts && 'ZTS' || 'NTS' }}"
10561068
runs-on: ubuntu-latest
10571069
steps:
10581070
- name: git checkout
@@ -1061,3 +1073,6 @@ jobs:
10611073
ref: ${{ inputs.branch }}
10621074
- name: FreeBSD
10631075
uses: ./.github/actions/freebsd
1076+
with:
1077+
configurationParameters: >-
1078+
--${{ matrix.zts && 'enable' || 'disable' }}-zts

.github/workflows/push.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ jobs:
216216
WINDOWS:
217217
if: github.repository == 'php/php-src' || github.event_name == 'pull_request'
218218
name: WINDOWS_X64_ZTS
219-
runs-on: windows-2019
219+
runs-on: windows-2022
220220
env:
221221
PHP_BUILD_CACHE_BASE_DIR: C:\build-cache
222222
PHP_BUILD_OBJ_DIR: C:\obj

.github/workflows/root.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,12 @@ jobs:
5555
run_alpine: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
5656
run_linux_ppc64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
5757
run_macos_arm64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
58+
run_freebsd_zts: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 3) || matrix.branch.version[0] >= 9 }}
5859
ubuntu_version: ${{
5960
(((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 5) || matrix.branch.version[0] >= 9) && '24.04')
6061
|| '22.04' }}
61-
windows_version: ${{ ((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9) && '2022' || '2019' }}
62+
windows_version: '2022'
63+
vs_crt_version: ${{ ((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) && 'vs17') || 'vs16' }}
6264
skip_laravel: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}
6365
skip_symfony: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}
6466
skip_wordpress: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}

NEWS

Lines changed: 72 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,73 @@
11
PHP NEWS
22
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3+
31 Jul 2025, PHP 8.3.24
4+
5+
- Calendar:
6+
. Fixed jewishtojd overflow on year argument. (David Carlier)
7+
8+
- Core:
9+
. Fixed bug GH-18833 (Use after free with weakmaps dependent on destruction
10+
order). (Daniil Gentili)
11+
. Fix OSS-Fuzz #427814456. (nielsdos)
12+
. Fix OSS-Fuzz #428983568 and #428760800. (nielsdos)
13+
. Fixed bug GH-17204 -Wuseless-escape warnings emitted by re2c. (Peter Kokot)
14+
15+
- Curl:
16+
. Fix memory leaks when returning refcounted value from curl callback.
17+
(nielsdos)
18+
. Remove incorrect string release. (nielsdos)
19+
20+
- LDAP:
21+
. Fixed GH-18902 ldap_exop/ldap_exop_sync assert triggered on empty
22+
request OID. (David Carlier)
23+
24+
- MbString:
25+
. Fixed bug GH-18901 (integer overflow mb_split). (nielsdos)
26+
27+
- OCI8:
28+
. Fixed bug GH-18873 (OCI_RETURN_LOBS flag causes oci8 to leak memory).
29+
(Saki Takamachi)
30+
31+
- Opcache:
32+
. Fixed bug GH-18639 (Internal class aliases can break preloading + JIT).
33+
(nielsdos)
34+
. Fixed bug GH-14082 (Segmentation fault on unknown address 0x600000000018
35+
in ext/opcache/jit/zend_jit.c). (nielsdos)
36+
37+
- OpenSSL:
38+
. Fixed bug #80770 (It is not possible to get client peer certificate with
39+
stream_socket_server). (Jakub Zelenka)
40+
41+
- PCNTL:
42+
. Fixed bug GH-18958 (Fatal error during shutdown after pcntl_rfork() or
43+
pcntl_forkx() with zend-max-execution-timers). (Arnaud)
44+
45+
- Phar:
46+
. Fix stream double free in phar. (nielsdos, dixyes)
47+
. Fix phar crash and file corruption with SplFileObject. (nielsdos)
48+
49+
- SOAP:
50+
. Fixed bug GH-18990, bug #81029, bug #47314 (SOAP HTTP socket not closing
51+
on object destruction). (nielsdos)
52+
. Fix memory leak when URL parsing fails in redirect. (Girgias)
53+
54+
- SPL:
55+
. Fixed bug GH-19094 (Attaching class with no Iterator implementation to
56+
MultipleIterator causes crash). (nielsdos)
57+
58+
- Standard:
59+
. Fix misleading errors in printf(). (nielsdos)
60+
. Fix RCN violations in array functions. (nielsdos)
61+
. Fixed GH-18976 pack() overflow with h/H format and INT_MAX repeater value.
62+
(David Carlier)
63+
64+
- Streams:
65+
. Fixed GH-13264 (fgets() and stream_get_line() do not return false on filter
66+
fatal error). (Jakub Zelenka)
67+
68+
- Zip:
69+
. Fix leak when path is too long in ZipArchive::extractTo(). (nielsdos)
70+
371
03 Jul 2025, PHP 8.3.23
472

573
- Core:
@@ -38,10 +106,6 @@ PHP NEWS
38106
. Fixed bug #74796 (Requests through http proxy set peer name).
39107
(Jakub Zelenka)
40108

41-
- PGSQL:
42-
. Fixed GHSA-hrwm-9436-5mv3 (pgsql extension does not check for errors during
43-
escaping). (CVE-2025-1735) (Jakub Zelenka)
44-
45109
- Phar:
46110
. Add missing filter cleanups on phar failure. (nielsdos)
47111
. Fixed bug GH-18642 (Signed integer overflow in ext/phar fseek). (nielsdos)
@@ -55,6 +119,8 @@ PHP NEWS
55119
- PGSQL:
56120
. Fix warning not being emitted when failure to cancel a query with
57121
pg_cancel_query(). (Girgias)
122+
. Fixed GHSA-hrwm-9436-5mv3 (pgsql extension does not check for errors during
123+
escaping). (CVE-2025-1735) (Jakub Zelenka)
58124

59125
- Random:
60126
. Fix reference type confusion and leak in user random engine.
@@ -64,9 +130,9 @@ PHP NEWS
64130
. Fix memory leak when calloc() fails in php_readline_completion_cb().
65131
(nielsdos)
66132

67-
- SOAP:
133+
- Soap:
68134
. Fix memory leaks in php_http.c when call_user_function() fails. (nielsdos)
69-
. Fixed GHSA-453j-q27h-5p8x (NULL Pointer Dereference in PHP SOAP Extension
135+
. Fixed GHSA-453j-q27h-5p8x (NULL Pointer Dereference in PHP SOAP ExtensionAdd commentMore actions
70136
via Large XML Namespace Prefix). (CVE-2025-6491) (Lekssays, nielsdos)
71137

72138
- Standard:

Zend/Optimizer/zend_func_infos.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -450,8 +450,6 @@ static const func_info_t func_infos[] = {
450450
F1("compact", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
451451
FN("array_fill", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_ANY),
452452
F1("array_fill_keys", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
453-
F1("array_replace", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
454-
F1("array_replace_recursive", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
455453
FN("array_keys", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_LONG|MAY_BE_ARRAY_OF_STRING),
456454
FN("array_values", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
457455
F1("array_count_values", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_LONG),
@@ -460,13 +458,8 @@ static const func_info_t func_infos[] = {
460458
F1("array_flip", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_LONG|MAY_BE_ARRAY_OF_STRING),
461459
F1("array_change_key_case", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
462460
F1("array_intersect_key", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
463-
F1("array_intersect_ukey", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
464-
F1("array_intersect", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
465-
F1("array_uintersect", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
466461
F1("array_intersect_assoc", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
467462
F1("array_uintersect_assoc", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
468-
F1("array_intersect_uassoc", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
469-
F1("array_uintersect_uassoc", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
470463
F1("array_diff_key", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
471464
F1("array_diff_ukey", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
472465
F1("array_udiff", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),

Zend/tests/bug40770.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ Bug #40770 (Apache child exits when PHP memory limit reached)
44
memory_limit=8M
55
--SKIPIF--
66
<?php
7+
if (PHP_OS_FAMILY === 'Windows' && version_compare(PHP_VERSION, '8.4', '<')) {
8+
die("xfail fails on Windows Server 2022 and newer.");
9+
}
710
$zend_mm_enabled = getenv("USE_ZEND_ALLOC");
811
if ($zend_mm_enabled === "0") {
912
die("skip Zend MM disabled");

0 commit comments

Comments
 (0)