1
0
mirror of https://github.com/php/php-src.git synced 2026-03-30 04:02:19 +02:00
Commit Graph

138261 Commits

Author SHA1 Message Date
Calvin Buckley
1f914f9084 Update versions for PHP 8.4.0RC2 php-8.4.0RC2 2024-10-08 10:57:40 -03:00
Calvin Buckley
4643386703 Fix regression on platforms without ZEND_CHECK_STACK_LIMIT set (8.4) (#16285)
The check called an API only available with this def set.
Gate the check behind ifdef and change control flow to better fit it.

Co-authored-by: Arnaud Le Blanc <arnaud.lb@gmail.com>
2024-10-08 10:22:23 -03:00
Ilija Tovilo
d76ef13757 Fix various hooked object iterator issues
Fixes GH-16185
Closes GH-16281
2024-10-08 13:35:33 +02:00
Dmitry Stogov
3fcf8caca8 Update IR
IR commit: 88c71c9572bdd9dd8aed99c80ad4a54fcbcfe082
2024-10-07 21:18:35 +03:00
Christoph M. Becker
626dc50989 Fix PDO_Firebird tests for 32bit
These tests are failing because the integers are too large to be cast
to a PHP int.  We fix this by expecting either an int or a string.

Closes GH-16278.
2024-10-07 19:52:39 +02:00
Arnaud Le Blanc
6f70cd3f04 NEWS for GH-16200 2024-10-07 18:19:26 +02:00
Arnaud Le Blanc
82f70dba7d Use original op_array when JIT compiling a Closure
zend_jit() assumes that Closure op_arrays have no scope, but this is not true
when using the hot counters, first exec, or trace triggers as they use the
executed op_array, which is in case of Closures is a copy, with a scope.

In the tracing JIT this problem is avoided as we fetch the original op_array
when compiling a Closure. Here I replicate this for the hot counters and first
exec triggers.

Fixes GH-16186
Closes GH-16200
2024-10-07 18:06:14 +02:00
Niels Dossche
07e418abfb Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3:
  Fix GH-16261: Reference invariant broken in mb_convert_variables()
2024-10-07 17:49:56 +02:00
Niels Dossche
2fe8c4a4fc Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fix GH-16261: Reference invariant broken in mb_convert_variables()
2024-10-07 17:49:24 +02:00
Niels Dossche
bf70d9ba0d Fix GH-16261: Reference invariant broken in mb_convert_variables()
The behaviour is weird in the sense that the reference must get
unwrapped. What ended up happening is that when destroying the old
reference the sources list was not cleaned properly. We add handling for
that. Normally we would use use ZEND_TRY_ASSIGN_STRINGL but that doesn't
work here as it would keep the reference and change values through
references (see bug #26639).

Closes GH-16272.
2024-10-07 17:46:06 +02:00
Niels Dossche
82d58c4842 Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3:
  Fix GH-16259: Soap segfault when classmap instantiation fails
2024-10-07 17:43:10 +02:00
Niels Dossche
932406a146 Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fix GH-16259: Soap segfault when classmap instantiation fails
2024-10-07 17:42:54 +02:00
Niels Dossche
71222f799d Fix GH-16259: Soap segfault when classmap instantiation fails
Instantiation failure checks were missing.

Closes GH-16273.
2024-10-07 17:42:27 +02:00
Niels Dossche
b24cc7386b Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3:
  Fixed GH-16233: Observer segfault when calling user function in internal function via trampoline
2024-10-07 17:18:32 +02:00
Niels Dossche
0338008852 Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fixed GH-16233: Observer segfault when calling user function in internal function via trampoline
2024-10-07 17:17:27 +02:00
Niels Dossche
e715dd0afb Fixed GH-16233: Observer segfault when calling user function in internal function via trampoline
In the test, I have an internal `__call` function for `_ZendTestMagicCallForward` that calls the global function with name `$name` via `call_user_function`.
Note that observer writes the pointer to the previously observed frame in the last temporary of the new call frame (`*prev_observed_frame`).

The following happens:
First, we call `$test->callee`, this will be handled via a trampoline with T=2 for the two arguments. The call frame is allocated at this point. This call frame is not observed because it has `ZEND_ACC_CALL_VIA_TRAMPOLINE` set. Next we use `ZEND_CALL_TRAMPOLINE` to call the trampoline, this reuses the stack frame allocated earlier with T=2, but this time it is observed. The pointer to the previous frame is written outside of the call frame because `T` is too small (should be 3). We are now in the internal function `_ZendTestMagicCallForward::__call` where we call the global function `callee`. This will push a new call frame which will overlap `*prev_observed_frame`. This value gets overwritten by `zend_init_func_execute_data` when `EX(opline)` is set because `*prev_observed_frame` overlaps with `EX(opline)`. From now on, `*prev_observed_frame` is corrupted. When `zend_observer_fcall_end` is called this will result in reading wrong value `*prev_observed_frame` into `current_observed_frame`. This causes issues in `zend_observer_fcall_end_all` leading to the segfault we observe.

Despite function with `ZEND_ACC_CALL_VIA_TRAMPOLINE` not being observed, the reuse of call frames makes problems when `T` is not large enough.
To fix this, we make sure to add 1 to `T` if `ZEND_OBSERVER_ENABLED` is true.

Closes GH-16252.
2024-10-07 17:16:43 +02:00
Arnaud Le Blanc
befe404419 NEWS for GH-16196 2024-10-07 15:04:43 +02:00
Arnaud Le Blanc
c1ea9b173f Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3:
  NEWS for GH-16196
  NEWS for GH-16196
  Handle references properties of the Exception class
2024-10-07 15:04:24 +02:00
Arnaud Le Blanc
a774704aaf NEWS for GH-16196 2024-10-07 15:04:13 +02:00
Arnaud Le Blanc
498e88489e Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  NEWS for GH-16196
  Handle references properties of the Exception class
2024-10-07 15:03:55 +02:00
Arnaud Le Blanc
df4db5c1b4 NEWS for GH-16196 2024-10-07 15:03:43 +02:00
Arnaud Le Blanc
c2115a43e3 Handle references properties of the Exception class
Fixes GH-16188
Closes GH-16196
2024-10-07 15:03:31 +02:00
Dmitry Stogov
64214d286b Update IR
IR commit: eff4b4109aed08d4864bd5bd7228575d8fd01158
2024-10-07 15:31:04 +03:00
Daniel Scherzer
76e5d82eb2 Fix GH-16162: No ReflectionProperty::IS_VIRTUAL
Closes GH-16166
2024-10-07 14:17:40 +02:00
David Carlier
7f1fd0646b Merge branch 'PHP-8.3' into PHP-8.4 2024-10-07 13:05:41 +01:00
David Carlier
7c43f68c98 Merge branch 'PHP-8.2' into PHP-8.3 2024-10-07 13:05:32 +01:00
David Carlier
a2bdfeff4f Fix GH-16257 imagescale underflow on RGB channels.
backport of 948bb0a5c2

close GH-16257
2024-10-07 13:05:05 +01:00
Matteo Beccati
cba92beac3 PDO_MYSQL: Properly quote binary strings
Closes GH-15949
2024-10-07 11:04:50 +02:00
Luís Cobucci
93c68caeb5 Reproduce unexpected MySQL warnings for binary values
The prepared statement emulation layer is handling binary content in a
way that creates warnings in MySQL.

When analysing the query logs, we saw that the content sent to the
server is missing `0x5C` characters when the using emulated prepares.

This introduces a minimal test case that reproduces the issue to aid the
solution.

More info: https://github.com/doctrine/dbal/pull/6522#issuecomment-2340939347

Signed-off-by: Luís Cobucci <lcobucci@gmail.com>
2024-10-07 09:29:02 +02:00
Christoph M. Becker
5c7c5d93ae Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3:
  Install 32bit Firebird server on x86
2024-10-07 01:39:51 +02:00
Christoph M. Becker
424fb2c3fc Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Install 32bit Firebird server on x86
2024-10-07 01:35:29 +02:00
Christoph M. Becker
c3434091de Install 32bit Firebird server on x86
php_pdo_firebird.dll depends on fbclient.dll, which is shipped with the
server.  However, a 64bit Firebird server ships a 64bit fbclient.dll,
which is not compatible with a 32bit php_pdo_firebird.dll.

Closes GH-16223.
2024-10-07 01:34:54 +02:00
Christoph M. Becker
526d858417 Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3:
  Fix failing openssl_private_decrypt tests
  Update Windows CI to use php-sdk-2.3.0
2024-10-07 01:08:51 +02:00
Christoph M. Becker
cebb5f0307 Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fix failing openssl_private_decrypt tests
  Update Windows CI to use php-sdk-2.3.0
2024-10-07 01:08:09 +02:00
Christoph M. Becker
d49c92ff00 Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix failing openssl_private_decrypt tests
  Update Windows CI to use php-sdk-2.3.0
2024-10-07 01:07:04 +02:00
Jakub Zelenka
53cc92c85c Fix failing openssl_private_decrypt tests
We backport 11caf094f1af6b47ea2138c5fa907838911ebe01[1] as a step to
get back to a green CI.

[1] <11caf094f1>
2024-10-07 01:06:04 +02:00
Christoph M. Becker
d9d82377cc Update Windows CI to use php-sdk-2.3.0
php-sdk-2.2.0 still fetches dependencies from the no longer up to date
<https://windows.php.net/downloads/php-sdk/deps/>, and as such won't be
tested with any security updates we provide for Windows.  Given that
PHP 8.1 is going to receive security updates for further 15 months, we
should should not ignore these dependency updates.

Closes GH-16097.
2024-10-07 01:05:47 +02:00
Jakub Zelenka
ee7e21020e Fix FPM tester params type 2024-10-06 21:26:42 +01:00
Jakub Zelenka
665ea46c1c Merge branch 'PHP-8.3' into PHP-8.4 2024-10-06 21:25:36 +01:00
Jakub Zelenka
05bbbe593b Merge branch 'PHP-8.2' into PHP-8.3 2024-10-06 21:25:01 +01:00
Jakub Zelenka
4c76509f82 Fix extra spaces in NEWS [skip ci] 2024-10-06 21:23:45 +01:00
Jakub Zelenka
10d2d862a6 Merge branch 'PHP-8.3' into PHP-8.4 2024-10-06 19:43:19 +01:00
Jakub Zelenka
59816b9a73 Merge branch 'PHP-8.2' into PHP-8.3 2024-10-06 19:40:24 +01:00
Jakub Zelenka
5a47f27021 Fix GH-15395: php-fpm: zend_mm_heap corrupted with cgi-fcgi request
Closes GH-16227

Co-authored-by: David Carlier <devnexen@gmail.com>
2024-10-06 19:37:55 +01:00
David Carlier
062b3ca2f2 Merge branch 'PHP-8.3' into PHP-8.4 2024-10-06 19:26:10 +01:00
David Carlier
2af32659b3 Merge branch 'PHP-8.2' into PHP-8.3 2024-10-06 19:25:59 +01:00
David Carlier
8537aa687e Fix GH-16267 socket_strerror overflow on argument value.
only socket_strerror provides user-supplied value to sockets_strerror
handler.

close GH-16270
2024-10-06 19:25:38 +01:00
David Carlier
d1a313e12c Merge branch 'PHP-8.3' into PHP-8.4 2024-10-06 18:07:48 +01:00
David Carlier
ac675744ab Merge branch 'PHP-8.2' into PHP-8.3 2024-10-06 18:07:35 +01:00
David Carlier
e3015de741 Fix GH-16234 jewishtojd overflow on year argument.
close GH-16243
2024-10-06 18:07:11 +01:00