Repository navigation
Guard var_export() against native stack overflow (GH-24605) - #24671
Closed
labishbardiya wants to merge 2 commits into
Closed
labishbardiya wants to merge 2 commits into
labishbardiya wants to merge 2 commits into
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
ndossche
approved these changes
Oct 25, 2026
ndossche
left a comment
Member
There was a problem hiding this comment.
Thanks
For the test: I think that either increasing the nesting level from 3000 to something slightly higher, or lowering the max_allowed_stack_size would make the test more robust.
LamentXU123
approved these changes
Oct 27, 2026
LamentXU123
added a commit
to LamentXU123/php-src
that referenced
this pull request
Oct 27, 2026
* PHP-8.4: Fix phpGH-24605: Guard var_export() against native stack overflow (php#24671)
LamentXU123
added a commit
to LamentXU123/php-src
that referenced
this pull request
Oct 27, 2026
* PHP-8.5: Fix phpGH-24605: Guard var_export() against native stack overflow (php#24671)
arnaud-lb
added a commit
to prateekbhujel/php-src
that referenced
this pull request
Oct 27, 2026
* PHP-8.4: (26 commits) Fix phpGH-24695: FPM tester sends signal to process group when PID is missing (php#24698) Fix phpGH-24605: Guard var_export() against native stack overflow (php#24671) Fix use-after-free of CURLOPT_STDERR stream on cloned curl handle IR: Backport code buffer rollback fix Fix SQL test on Windows (php#24755) Fix phpGH-24697: cli: passing PHP_HTTP_PARSER_STRICT build option doesn't work Fix phpGH-24438: Preserve indirect types in JIT side traces Fix phpGH-17733: System entropy does not take into account function order, resulting in wrong functions possibly called in different configurations Fix unmapping of an unrelated range when the aligned chunk mmap fails (php#24542) Backport: Adapt intl timezone test expectations for ICU 79.1 (php#24724) Tracing JIT: keep the SEND_VAL type guard after assigning to a reference Backport: Adapt intl timezone test expectations for ICU 79.1 (php#24684) ext/zip: Reject broken libzip versions on Windows (php#24371) ext/zip: Exclude broken libzip 1.12 (php#24358) Fix phpGH-24264: Unwind/GracefulExit discarded in spl_iterators.c phpdbg: Backport watchpoint fixes to PHP-8.4 Fix JIT reading packed-turned-hash array as packed after string key write ext/standard: Skip proc_open descriptor 0 tests without /proc/self/fd symlinks JIT: Fix operand type check in zend_redo_pass_two_ex() (php#24658) Fix error paths in dom_xml_serializing_a_document_node() ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add native stack overflow protection to
var_export()so deeply nested arrays and objects raise a catchableErrorinstead of risking a segmentation fault.Refs GH-24605.
Root cause
php_var_export_ex()recursively processes nested structures without checking the native stack limit.Other recursive PHP operations already use Zend's stack-limit protection.
Changes
php_var_export_ex().FAILUREwhen the stack limit is exceeded.Validation
Environment: macOS ARM64, PHP 8.4.28-dev, debug build.
The unrelated unexpected failure occurred in
php_ini_loaded_file.phpt. It is caused by inherited-cconfiguration arguments from the test harness.The same test passes when run without those arguments. A correction is already proposed in PHP PR #24406.
The full suite has therefore not been demonstrated to pass without unexpected failures under the standard
make testinvocation.Scope
This change addresses only the
var_export()portion of GH-24605.The
print_r()andunserialize()cases remain outside this PR's scope.