Commit Graph

4760 Commits

Author SHA1 Message Date
David Carlier
b320aabc5e zend call stack fixing stack limit for macOs arm64.
8MB sounded a prudent size for older 10.9 macOs release, however
with newer mac with arm64, it triggers a stack overflow.

close GH-13319
2024-02-05 19:32:29 +00:00
Niels Dossche
3b5986db69 Implement GH-12908: Show attribute name/class in ReflectionAttribute dump
This is consistent with how many other Reflection classes have a name
field, and it makes debugging easier.

Closes GH-12908.
Closes GH-12917.
2024-02-04 23:02:02 +01:00
Gina Peter Banyard
a479ed7cc5
Zend: Add tests for offsets and containers (#12723)
Add various tests showcasing the behavioural variations of different offset types used on various container types in all possible operations:
 - Read
 - Write
 - Read Write
 - Appending
 - Unsetting
 - Existence checks with isset()/empty/null coalesce operator
 - Behaviour of nesting dimensions (e.g. $container[$offset1][$offset2])

Add a test to ensure compile time and runtime behaviour is identical for offsets.

Add an internal class that overloads the dimension object handlers to zend_test
2024-01-25 15:06:59 +00:00
Jorg Adam Sowa
ea3c541640
GH-13142: add missing test cases (#13235)
* Added missing global cases to test

* Update gh13142
2024-01-24 12:02:32 +01:00
Ilija Tovilo
d653646841
Fix iterator position resetting
Previously, when an array was converted from packed to hashed, iterators would
not be correctly reset to 0. Similarly, removing the last element from an array
would decrease nNumUsed but not actually fix the iterator position, causing the
element to be skipped in the next iteration.

Some code was also removed that skips over IS_UNDEF elements for
nInternalPointer and iterator positions. This is unnecessary, as this already
happens during iteration.

Closes GH-13178
Closes GH-13188
2024-01-21 23:24:00 +01:00
Alex Dowad
6fa4286ba4 Merge branch 'PHP-8.3'
* PHP-8.3:
  Do not allow zend.script_encoding to be set to 'pass'
2024-01-21 15:14:29 +02:00
Alex Dowad
1e92d47f41 Do not allow zend.script_encoding to be set to 'pass'
When investigating another bug reported by GitHub user 'tstangner',
I discovered that PHP segfaults when the INI parameter
zend.script_encoding is set to "pass". This bug dates back to
December 2022 (caused by yours truly in 953864661a).

If any PHP users in the wild were actually setting zend.script_encoding
to "pass" (which would be an utterly useless thing to do), I expect that
someone would have filed a bug report by now. The absence of such bug
reports is evidence that nobody is doing this.

Hence, it seems that the best fix is simply to disallow "pass" as a
choice for zend.script_encoding. The internal function
'php_mb_zend_encoding_list_parser' which I am modifying to accomplish
this has no other in-tree callers, aside from the 'exif' extension.
Further, exif only calls the function with a few hard-coded values, and
none of them are the string "pass", so this change will not have any
impact on exif.
2024-01-21 14:51:54 +02:00
Niels Dossche
fe064d7f12 Fix GH-13142: Undefined variable name is shortened when contains \0
Uses the new %S formatter and introduces the necessary changes and
helpers.
2024-01-20 23:49:13 +01:00
Niels Dossche
31092c235d Merge branch 'PHP-8.3'
* PHP-8.3:
  Fix GH-13177: PHP 8.3.2: final private constructor not allowed when used in trait
  Fix GH-12107: When running a stored procedure (that returns a result set) twice, PHP crashes
2024-01-19 23:41:01 +01:00
Niels Dossche
c2c1710ed7 Fix GH-13177: PHP 8.3.2: final private constructor not allowed when used in trait
zend_compile has an exception to this rule for constructors using
`zend_is_constructor`, which compares the function name to
`__construct`. Sadly, `zend_is_constructor` is not a public API, but we
can just do the string compare ourselves.

Closes GH-13179.
2024-01-19 23:36:36 +01:00
Ilija Tovilo
ffc250d245
Add runtime type inference verification
Co-authored-by: Dmitry Stogov <dmitry@zend.com>

Closes GH-12930
2024-01-19 09:29:14 +01:00
Niels Dossche
4091d2407b Merge branch 'PHP-8.3'
* PHP-8.3:
  Fix GH-13097: Anonymous class reference in trigger_error / thrown Exception
2024-01-16 21:06:29 +01:00
Niels Dossche
764360b1b0 Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fix GH-13097: Anonymous class reference in trigger_error / thrown Exception
2024-01-16 21:06:03 +01:00
Niels Dossche
2cde4b2ea4 Fix GH-13097: Anonymous class reference in trigger_error / thrown Exception
Closes GH-13153.
2024-01-16 21:05:04 +01:00
Ilija Tovilo
cbd201192d
Merge branch 'PHP-8.3'
* PHP-8.3:
  strtok is not comptime()
2024-01-14 19:13:25 +01:00
Ilija Tovilo
ed64949d12
strtok is not comptime()
Fixes GH-13145
Closes GH-13148
2024-01-14 19:12:41 +01:00
Máté Kocsis
d84ed03a68 Improve error messages related to void/never return types of methods 2024-01-14 16:04:23 +01:00
Jorg Adam Sowa
f1f33ee3a1
Added missing case 0.0 to the test runtime_compile_time_binary_operands.phpt (#13010) 2023-12-24 01:06:32 +01:00
Arnaud Le Blanc
3c3aba11be Merge branch 'PHP-8.3'
* PHP-8.3:
  WS
  Clarify the stack limit exception message
  Fix GH-12643: Stack limit tests failing on ppc64le
2023-12-10 13:27:13 +01:00
Arnaud Le Blanc
6aa70b577d WS 2023-12-10 13:24:49 +01:00
Arnaud Le Blanc
b1516d95e0 Clarify the stack limit exception message
Make it clearer why the size is not exactly zend.max_allowed_stack_size
2023-12-10 13:20:21 +01:00
Arnaud Le Blanc
dad6912b99 Fix GH-12643: Stack limit tests failing on ppc64le
These tests were setting zend.max_allowed_stack_size to a small value. On ppc64le
this value is too small and the limit may be reached too soon.
2023-12-10 13:20:21 +01:00
Niels Dossche
bfb678a266 Merge branch 'PHP-8.3'
* PHP-8.3:
  Fix GH-12854: 8.3 - as final trait-used method does not correctly report visibility in Reflection
2023-12-05 21:49:42 +01:00
Niels Dossche
e679ab36b3 Fix GH-12854: 8.3 - as final trait-used method does not correctly report visibility in Reflection
Closes GH-12857.
2023-12-05 21:49:29 +01:00
Niels Dossche
2af22ab786 Merge branch 'PHP-8.3'
* PHP-8.3:
  Fix GH-12826: Weird pointers issue in nested loops
  Fix GH-12838: [SOAP] Temporary WSDL cache files not being deleted
2023-12-01 17:12:33 +01:00
Niels Dossche
b175ea4215 Fix GH-12826: Weird pointers issue in nested loops
This regressed in cd53ce838a.
The loop with `zend_hash_iterators_update` hangs forever because
`iter_pos` can't advance to idx. This is because the
`zend_hash_iterators_lower_pos` upper bound is `target->nNumUsed`,
but that is set to `source->nNumOfElements`.
That means that if there are holes in the array, we still loop over all
the buckets but the number of bucket slots will not match.
Fix it by changing the assignment.

Closes GH-12831.
2023-12-01 17:12:18 +01:00
Ilija Tovilo
a5833577d7
Merge branch 'PHP-8.3'
* PHP-8.3:
  Fix in-place modification of filename in php_message_handler_for_zend
2023-11-20 14:13:12 +01:00
Ilija Tovilo
05a815399e
Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fix in-place modification of filename in php_message_handler_for_zend
2023-11-20 14:13:06 +01:00
Ilija Tovilo
d8e866da04
Fix in-place modification of filename in php_message_handler_for_zend
php_strip_url_passwd modifies url in-place. We cannot assume from
php_message_handler_for_zend that data is a temporary, modifiable string.

Fixes oss-fuzz #64209
Closes GH-12733
2023-11-20 14:12:25 +01:00
Ilija Tovilo
e0a6dbcbf4
Merge branch 'PHP-8.3'
* PHP-8.3:
  Fix use-after-free of name in var-var with malicious error handler
2023-11-20 14:06:40 +01:00
Ilija Tovilo
88d012f360
Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fix use-after-free of name in var-var with malicious error handler
2023-11-20 14:06:25 +01:00
Ilija Tovilo
ea52706a2a
Fix use-after-free of name in var-var with malicious error handler
Fixes oss-fuzz #54325
Closes GH-12732
2023-11-20 14:05:46 +01:00
Arnaud Le Blanc
8f424dd36b
Test that objects free handler call zend_weakrefs_notify (#12546) 2023-11-11 13:53:35 +01:00
Ilija Tovilo
9ba9b8f874
Merge branch 'PHP-8.3'
* PHP-8.3:
  Fix OP1 leak in error path of post inc/dec
2023-11-02 19:32:02 +01:00
Ilija Tovilo
ddabe89add
Fix OP1 leak in error path of post inc/dec
Fixes oss-fuzz #63802
Closes GH-12599
2023-11-02 19:30:59 +01:00
Dmitry Stogov
f27090cbc2 Merge branch 'PHP-8.3'
* PHP-8.3:
  Fixed GH-12564: The negative fiber.stack_size setting leads to crash
2023-11-01 16:28:50 +03:00
Dmitry Stogov
032a293ac2 Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fixed GH-12564: The negative fiber.stack_size setting leads to crash
2023-11-01 16:28:42 +03:00
Dmitry Stogov
9096ba9917 Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fixed GH-12564: The negative fiber.stack_size setting leads to crash
2023-11-01 16:26:32 +03:00
Dmitry Stogov
fe3a819e32 Fixed GH-12564: The negative fiber.stack_size setting leads to crash 2023-11-01 16:13:17 +03:00
Dmitry Stogov
b7c34b7ff9 Merge branch 'PHP-8.3'
* PHP-8.3:
  Fix memory leak after GC inside a foreach loop (#12572)
2023-10-30 23:37:03 +03:00
Dmitry Stogov
004d8951ce Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fix memory leak after GC inside a foreach loop (#12572)
2023-10-30 23:36:50 +03:00
Dmitry Stogov
d906d8b5ea Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix memory leak after GC inside a foreach loop (#12572)
2023-10-30 23:36:41 +03:00
Dmitry Stogov
abe3673d1f
Fix memory leak after GC inside a foreach loop (#12572)
Fixes oss-fuzz #54515
2023-10-30 23:36:12 +03:00
Julien Desrosiers
226b92b1dc
Nested match expression tests
Closes GH-12433
2023-10-23 08:18:17 +02:00
Ilija Tovilo
f39b0292bf
Merge branch 'PHP-8.3'
* PHP-8.3:
  Fix double-free of doc_comment when overriding static property via trait
2023-10-19 15:23:34 +02:00
Ilija Tovilo
8347740c8c
Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fix double-free of doc_comment when overriding static property via trait
2023-10-19 15:23:26 +02:00
Ilija Tovilo
4f1f77c51b
Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix double-free of doc_comment when overriding static property via trait
2023-10-19 15:23:00 +02:00
Ilija Tovilo
af3d2f7ec9
Fix double-free of doc_comment when overriding static property via trait
When redeclaring an overridden static property with a trait we're removing the
property from the class. However, because the property itself does not belong to
the class we must not free its associated data.

This issue is exposed by 9a250cc9d6 in PHP 8.3+ because duplicate static
properties in traits are no longer skipped, but redeclared.

Fixes GH-12468
2023-10-19 15:21:53 +02:00
Ilija Tovilo
f39b5c4c25
Close PHP tags in tests
Closes GH-12422
2023-10-18 17:34:10 +02:00
Ilija Tovilo
0de79a8f5a
Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fixed a bug in zend_memnistr with single character needle
2023-10-18 16:02:19 +02:00