George Peter Banyard
99fa740acb
Use common function for TypeError on illegal offset access ( #10544 )
...
This merges all usages of emitting an offset TypeError into a new ZEND_API function
zend_illegal_container_offset(const zend_string* container, const zval *offset, int type);
Where the container should represent the type on which the access is attempted (e.g. string, array)
The offset zval that is used, where the error message will display its type
The type of access, which should be a BP_VAR_* constant, to get special message for isset/empty/unset
2023-06-06 11:28:19 +01:00
Niels Dossche
61e1f8aaeb
Let closure created from magic method accept named parameters
...
Implements GH-11348.
Closes GH-11364.
2023-06-05 20:03:09 +02:00
Ilija Tovilo
8ed66b4347
Add tests for list() in assignment in array literals
...
Array literals will constant evaluate their elements. These can include
assignments, even though these are not valid constant expressions. The lhs of
assignments can be a list() element (or []) which is parsed as an array with a
special flag.
2023-05-26 12:15:01 +02:00
Ilija Tovilo
0b1d750d91
Allow arbitrary expressions in static variable initializer
...
Closes GH-9301
2023-05-24 20:17:31 +02:00
Ilija Tovilo
a59c933ac0
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix exception handling in array_multisort()
2023-05-24 13:56:28 +02:00
Ilija Tovilo
0ee43718c0
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix exception handling in array_multisort()
2023-05-24 13:56:21 +02:00
Ilija Tovilo
b2ec6c24f8
Fix exception handling in array_multisort()
...
Closes GH-11302
2023-05-24 13:55:25 +02:00
Ilija Tovilo
ded8b7f5bd
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix access on NULL pointer in array_merge_recursive()
2023-05-24 13:37:59 +02:00
Ilija Tovilo
4676d9bc43
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix access on NULL pointer in array_merge_recursive()
2023-05-24 13:37:47 +02:00
Ilija Tovilo
f5c54fd88b
Fix access on NULL pointer in array_merge_recursive()
...
Closes GH-11303
2023-05-24 13:36:52 +02:00
Ilija Tovilo
7790ee8736
Fix concat_function use-after-free on out-of-memory error ( #11297 )
...
Introduced by GH-10049
2023-05-22 22:02:27 +02:00
Ilija Tovilo
5c741644d1
Fix string coercion for $a .= $a ( #11296 )
...
free_op2_string may be set to false when the operands are not strings, and
`result == op1 == op2`, by re-using the same string for both operands. In that
case, the string should still be copied to result because result is not actually
a string. Also change the op1 branch to stay consistent.
Introduced by GH-10049
2023-05-22 19:48:07 +02:00
Nikita Popov
c230aa9be3
Correctly handle multiple constants in typed declaration
...
While here also fix AST printing support.
2023-05-21 14:17:01 +01:00
Niels Dossche
727e26f9f2
Fix #97836 and #81705 : Segfault / type confusion in concat_function
...
The following sequence of actions was happening which caused a null
pointer dereference:
1. debug_backtrace() returns an array
2. The concatenation to $c will transform the array to a string via
`zval_get_string_func` for op2 and output a warning.
Note that zval op1 is of type string due to the first do-while
sequence.
3. The warning of an implicit "array to string conversion" triggers
the ob_start callback to run. This code transform $c (==op1) to a long.
4. The code below the 2 do-while sequences assume that both op1 and op2
are strings, but this is no longer the case. A dereference of the
string will therefore result in a null pointer dereference.
The solution used here is to work with the zend_string directly instead
of with the ops.
For the tests:
Co-authored-by: changochen1@gmail.com
Co-authored-by: cmbecker69@gmx.de
Co-authored-by: yukik@risec.co.jp
Closes GH-10049.
2023-05-16 20:27:00 +02:00
Ilija Tovilo
e0af7c332d
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix delayed early binding class redeclaration error
2023-05-12 19:29:27 +02:00
Ilija Tovilo
e3499130f1
Fix delayed early binding class redeclaration error
...
If we bind the class to the runtime slot even if we're not the ones who have
performed early binding we'll miss the redeclaration error in the
ZEND_DECLARE_CLASS_DELAYED handler.
Closes GH-11226
2023-05-12 19:29:04 +02:00
Bob Weinand
0787247b19
Merge branch 'PHP-8.2'
2023-05-10 16:46:33 +02:00
Bob Weinand
53558ffc71
Merge branch 'PHP-8.1' into PHP-8.2
2023-05-10 16:45:48 +02:00
Bob Weinand
975d28e278
Fix GH-11222: foreach by-ref may jump over keys during a rehash
...
Signed-off-by: Bob Weinand <bobwei9@hotmail.com >
2023-05-10 16:45:05 +02:00
Bob Weinand
a9d11b64a7
Merge branch 'PHP-8.2'
2023-05-05 12:09:33 +02:00
Bob Weinand
cfbb47b57b
Merge branch 'PHP-8.1' into PHP-8.2
2023-05-05 12:07:48 +02:00
Bob Weinand
05bd1423ee
Fix GH-11189: Exceeding memory limit in zend_hash_do_resize leaves the array in an invalid state
...
There are more places in zend_hash.c where the resize happened after some values on the HashTable struct were set.
I reordered them all, but writing a test for these would rely on the particular amount of bytes allocated at given points in time.
2023-05-05 12:04:40 +02:00
Ilija Tovilo
e2bd92f32c
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Endless recursion when using + on array in foreach
2023-05-01 13:21:54 +02:00
Ilija Tovilo
50127cef92
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Endless recursion when using + on array in foreach
2023-05-01 13:21:32 +02:00
Ilija Tovilo
dc20cd9c3a
Endless recursion when using + on array in foreach
...
This reverts commit 84b4020eb4 .
Fixes GH-11171
2023-05-01 13:20:58 +02:00
Ilija Tovilo
4f74e8672c
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Allow aliasing namespaces containing reserved class names
2023-04-30 13:44:58 +02:00
Ilija Tovilo
5ad6571a21
Allow aliasing namespaces containing reserved class names
...
This reverts commit b9f7123c5e .
Fixes GH-11152
Closes GH-11153
2023-04-30 13:44:34 +02:00
Ilija Tovilo
44724430c1
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Propagate STREAM_DISABLE_OPEN_BASEDIR src flag to php_stream_stat_path_ex
2023-04-30 13:37:14 +02:00
Ilija Tovilo
de9b3f648c
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Propagate STREAM_DISABLE_OPEN_BASEDIR src flag to php_stream_stat_path_ex
2023-04-30 13:37:08 +02:00
Ilija Tovilo
8bf2d587d7
Propagate STREAM_DISABLE_OPEN_BASEDIR src flag to php_stream_stat_path_ex
...
Otherwise we can get open_basedir warnings from the stat call while still
performing the actual copy.
Fixes GH-11138
Closes GH-11156
2023-04-30 13:36:15 +02:00
Ilija Tovilo
a00e2233e3
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix incorrect match default branch optimization
2023-04-26 15:20:35 +02:00
Ilija Tovilo
368dd81faa
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix incorrect match default branch optimization
2023-04-26 15:20:27 +02:00
Ilija Tovilo
3a76f795f8
Fix incorrect match default branch optimization
...
Fixes GH-11134
Closes GH-11135
2023-04-26 15:19:20 +02:00
Máté Kocsis
04a5f2b11f
Add test to make sure that readonly properties cannot be reassigned by invoking the __clone() method directly
2023-04-25 17:17:05 +02:00
nielsdos
56f916e703
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Set error_log to an empty value if the test relies on that feature
2023-04-24 23:25:27 +02:00
nielsdos
7300659391
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Set error_log to an empty value if the test relies on that feature
2023-04-24 23:23:45 +02:00
Niels Dossche
691ff9f845
Set error_log to an empty value if the test relies on that feature
...
Some tests fail if the error_log is overriden by the loaded ini
configuration. Explicitly set it to an empty value to prevent the
failures.
See https://github.com/php/php-src/issues/10737#issuecomment-1452899299
Closes GH-10772.
2023-04-24 23:19:15 +02:00
Ilija Tovilo
6ca6b46234
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix incorrect CG(memoize_mode) state after bailout in ??=
2023-04-20 19:46:34 +02:00
Ilija Tovilo
439919c91d
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix incorrect CG(memoize_mode) state after bailout in ??=
2023-04-20 19:46:05 +02:00
Ilija Tovilo
4c38a79f09
Fix incorrect CG(memoize_mode) state after bailout in ??=
...
Fixes GH-11108
Closes GH-11109
2023-04-20 19:45:02 +02:00
Ilija Tovilo
04fd04acab
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix reference returned from CallbackFilterIterator::accept()
2023-04-20 13:43:29 +02:00
Ilija Tovilo
b2282bee32
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix reference returned from CallbackFilterIterator::accept()
2023-04-20 13:43:20 +02:00
Ilija Tovilo
5855bdcd6c
Fix reference returned from CallbackFilterIterator::accept()
...
Fixes oss-fuzz #58181
2023-04-20 10:18:18 +02:00
Máté Kocsis
414f71a902
Typed class constants ( #10444 )
...
RFC: https://wiki.php.net/rfc/typed_class_constants
Co-Authored-By: Ben <7127204+moliata@users.noreply.github.com >
Co-Authored-By: Bob Weinand <3154871+bwoebi@users.noreply.github.com >
Co-Authored-By: Ilija Tovilo <ilija.tovilo@me.com >
2023-04-16 22:20:26 +02:00
Ilija Tovilo
4dad419ae6
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Support enums in array_unique
2023-04-16 15:36:02 +02:00
Ilija Tovilo
35c1bb2e47
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Support enums in array_unique
2023-04-16 15:35:55 +02:00
Ilija Tovilo
e8b8341d3d
Support enums in array_unique
...
Fixes GH-9775
Closes GH-11015
2023-04-16 15:34:56 +02:00
Jakub Zelenka
35647aaec6
Merge branch 'PHP-8.2'
2023-04-15 21:31:53 +01:00
Jakub Zelenka
9a20f43b94
Merge branch 'PHP-8.1' into PHP-8.2
2023-04-15 21:29:11 +01:00
Jakub Zelenka
0ac55e9bfb
Add zend_test_crash funtion to segfault PHP process
...
This is useful for testing PHP-FPM handling of crashed children.
Closes GH-11082
2023-04-15 21:25:02 +01:00