[php-src] PHP-8.2: Avoid state corruption via bailout
| From: | Arnaud Le Blanc via Ilija Tovilo | Date: | Wed, 21 Oct 2026 14:44:29 +0000 |
| Subject: | [php-src] PHP-8.2: Avoid state corruption via bailout | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-142526@lists.php.net to get a copy of this message | ||
Author: Arnaud Le Blanc (arnaud-lb)
Committer: Ilija Tovilo (iluuu1994)
Date: 2026-10-21T16:06:22+02:00
Commit: https://github.com/php/php-src/commit/3584a98bda0f2c0d367255b046798b0d3a221a19
Raw diff: https://github.com/php/php-src/commit/3584a98bda0f2c0d367255b046798b0d3a221a19.diff
Avoid state corruption via bailout
- Replace bailout on OOM with UnwindExit
- Properly reset various globals that may be accessed during startup
Fix GHSA-w8hw-w9fx-j79w (CVE-2026-109618)
Fix GHSA-6wmf-4rv5-p3rp (CVE-2026-109619)
Co-authored-by: Ilija Tovilo <ilija.tovilo@me.com>
Co-authored-by: Jakub Zelenka <bukka@php.net>
Co-authored-by: Nora Dossche <7771979+ndossche@users.noreply.github.com>
Co-authored-by: Nicolas Grekas <nicolas.grekas@gmail.com>
Changed paths:
A Zend/tests/oom_SplFixedArray___unserialize.phpt
A Zend/tests/oom_SplFixedArray___wakeup.phpt
A Zend/tests/oom_SplFixedArray_copy_ctor.phpt
A Zend/tests/oom_SplFixedArray_fromArray_001.phpt
A Zend/tests/oom_SplFixedArray_fromArray_002.phpt
A Zend/tests/oom_after_main_script.phpt
A Zend/tests/oom_array_fill_001.phpt
A Zend/tests/oom_array_fill_002.phpt
A Zend/tests/oom_array_fill_003.phpt
A Zend/tests/oom_array_fill_004.phpt
A Zend/tests/oom_array_pad_001.phpt
A Zend/tests/oom_array_pad_002.phpt
A Zend/tests/oom_array_pad_003.phpt
A Zend/tests/oom_array_pad_004.phpt
A Zend/tests/oom_array_pad_005.phpt
A Zend/tests/oom_array_pad_006.phpt
A Zend/tests/oom_array_pad_007.phpt
A Zend/tests/oom_array_pad_008.phpt
A Zend/tests/oom_call_function.phpt
A Zend/tests/oom_call_function_002.phpt
A Zend/tests/oom_call_function_003.phpt
A Zend/tests/oom_debug_backtrace.phpt
A Zend/tests/oom_debug_backtrace_args.phpt
A Zend/tests/oom_debug_backtrace_named_args.phpt
A Zend/tests/oom_error_get_last.phpt
A Zend/tests/oom_exception_trace.phpt
A Zend/tests/oom_hard_limit_exceeded.phpt
A Zend/tests/oom_hard_limit_exceeded_during_complilation.phpt
A Zend/tests/oom_interrupt.phpt
A Zend/tests/oom_interrupt_unfinished_call_frame.phpt
A Zend/tests/oom_interrupt_unfinished_call_frame_fiber.phpt
A Zend/tests/oom_json_decode_001.phpt
A Zend/tests/oom_json_decode_002.phpt
A Zend/tests/oom_json_decode_003.phpt
A Zend/tests/oom_json_decode_004.phpt
A Zend/tests/oom_json_decode_005.phpt
A Zend/tests/oom_json_decode_006.phpt
A Zend/tests/oom_json_decode_007.phpt
A Zend/tests/oom_pending_at_shutdown.phpt
A Zend/tests/oom_range_001.phpt
A Zend/tests/oom_range_002.phpt
A Zend/tests/oom_range_003.phpt
A Zend/tests/oom_range_004.phpt
A Zend/tests/oom_request_parsing.phpt
A Zend/tests/oom_soft_limit_exceeded.phpt
A Zend/tests/oom_soft_limit_exceeded_fcall.phpt
A Zend/tests/oom_soft_limit_in_callback.phpt
A Zend/tests/oom_str_repeat.phpt
A Zend/tests/oom_unserialize_001.phpt
A Zend/tests/oom_unserialize_002.phpt
A Zend/tests/oom_unserialize_003.phpt
A Zend/tests/oom_unserialize_004.phpt
A Zend/tests/oom_unserialize_005.phpt
A Zend/tests/oom_unserialize_006.phpt
A Zend/tests/oom_unserialize_007.phpt
A Zend/tests/oom_unserialize_008.phpt
A Zend/tests/oom_unserialize_009.phpt
A Zend/tests/oom_unserialize_011.phpt
A Zend/tests/oom_unserialize_012.phpt
A Zend/tests/oom_unserialize_013.phpt
A Zend/tests/oom_unserialize_014.phpt
A Zend/tests/oom_unserialize_015.phpt
A Zend/tests/oom_unserialize_016.phpt
A Zend/tests/singleton_array.phpt
A ext/bz2/tests/oom_bzcompress.phpt
A ext/bz2/tests/oom_bzdecompress.phpt
A ext/bz2/tests/oom_bzip2_decompress_filter.phpt
A ext/curl/tests/oom_curl_exec.phpt
A ext/curl/tests/oom_curl_multi_exec.phpt
A ext/date/tests/oom_date_create.phpt
A ext/date/tests/oom_date_create_immutable.phpt
A ext/date/tests/oom_date_interval_create_from_date_string.phpt
A ext/date/tests/oom_date_modify.phpt
A ext/date/tests/oom_date_parse.phpt
A ext/date/tests/oom_dateinterval_construct.phpt
A ext/date/tests/oom_dateinterval_createfromdatestring.phpt
A ext/date/tests/oom_dateperiod_construct.phpt
A ext/date/tests/oom_datetime_construct.phpt
A ext/date/tests/oom_datetime_modify.phpt
A ext/date/tests/oom_datetimeimmutable_construct.phpt
A ext/date/tests/oom_datetimeimmutable_modify.phpt
A ext/date/tests/oom_strtotime.phpt
A ext/dom/tests/oom_xpath.phpt
A ext/exif/tests/oom_exif_big_thumbnail.inc
A ext/exif/tests/oom_exif_numeric_metadata.phpt
A ext/exif/tests/oom_exif_read_data_tags.phpt
A ext/exif/tests/oom_exif_scan_jpeg_header.phpt
A ext/exif/tests/oom_exif_thumbnail_large_file_001.phpt
A ext/exif/tests/oom_exif_thumbnail_large_file_002.phpt
A ext/exif/tests/oom_exif_thumbnail_tiff.phpt
A ext/fileinfo/tests/oom_cdf_sector_chain.phpt
A ext/filter/tests/oom_filter_default_encoded.phpt
A ext/filter/tests/oom_filter_input.phpt
A ext/filter/tests/oom_filter_input_array.phpt
A ext/filter/tests/oom_filter_var.phpt
A ext/filter/tests/oom_filter_var_array.phpt
A ext/filter/tests/oom_filter_var_full_special_chars.phpt
A ext/gd/tests/oom_imagecreatefrombmp.phpt
A ext/gd/tests/oom_imagecreatefromgd2.phpt
A ext/gd/tests/oom_imagecreatefromgd2_chunkbuf.phpt
A ext/gd/tests/oom_imagecreatefromgd2_compbuf.phpt
A ext/gd/tests/oom_imagecreatefromgd2part.phpt
A ext/gd/tests/oom_imagecreatefromgd2part_chunkbuf.phpt
A ext/gd/tests/oom_imagecreatefromgd2part_compbuf.phpt
A ext/gd/tests/oom_imagecreatefromgif.phpt
A ext/gd/tests/oom_imagecreatefrompng.phpt
A ext/gd/tests/oom_imagecreatefromstring.phpt
A ext/gd/tests/oom_imagecreatefromtga.phpt
A ext/gd/tests/oom_imagecreatefromwbmp.phpt
A ext/gd/tests/oom_imagecreatefromxbm.phpt
A ext/gd/tests/oom_imagepalettetotruecolor.phpt
A ext/iconv/tests/oom_iconv.phpt
A ext/iconv/tests/oom_iconv_mime_decode.phpt
A ext/iconv/tests/oom_iconv_mime_decode_headers.phpt
A ext/iconv/tests/oom_iconv_mime_encode.phpt
A ext/iconv/tests/oom_iconv_mime_encode_line_length.phpt
A ext/iconv/tests/oom_iconv_stream_filter.phpt
A ext/imap/tests/oom_imap_mime_header_decode.phpt
A ext/intl/tests/oom_normalizer_normalize.phpt
A ext/intl/tests/oom_normalizer_normalize_func.phpt
A ext/intl/tests/oom_uconverter_convert.phpt
A ext/intl/tests/oom_uconverter_transcode.phpt
A ext/json/tests/json_decode_oom_utf8_substitute.phpt
A ext/json/tests/json_encode_oom_escape.phpt
A ext/json/tests/json_encode_oom_partial_output.phpt
A ext/json/tests/json_encode_oom_pretty_print.phpt
A ext/json/tests/json_encode_oom_string_prealloc.phpt
A ext/mbstring/tests/oom_buf_growth.phpt
A ext/mbstring/tests/oom_mb_convert_case.phpt
A ext/mbstring/tests/oom_mb_convert_encoding.phpt
A ext/mbstring/tests/oom_mb_convert_variables.phpt
A ext/mbstring/tests/oom_mb_convert_variables_many.phpt
A ext/mbstring/tests/oom_mb_decode_mimeheader.phpt
A ext/mbstring/tests/oom_mb_encode_mimeheader.phpt
A ext/mbstring/tests/oom_mb_encode_numericentity.phpt
A ext/mbstring/tests/oom_mb_ereg_replace.phpt
A ext/mbstring/tests/oom_mb_eregi_replace.phpt
A ext/mbstring/tests/oom_mb_parse_str.phpt
A ext/mbstring/tests/oom_mb_split.phpt
A ext/mbstring/tests/oom_mb_str_split.phpt
A ext/mbstring/tests/oom_mb_str_split_filter.phpt
A ext/mbstring/tests/oom_mb_str_split_fixed_width.phpt
A ext/mbstring/tests/oom_mb_str_split_length.phpt
A ext/mbstring/tests/oom_mb_strcut_filter.phpt
A ext/mbstring/tests/oom_mb_strcut_length.phpt
A ext/mbstring/tests/oom_mb_strimwidth.phpt
A ext/mbstring/tests/oom_mb_strtoupper.phpt
A ext/mbstring/tests/oom_mb_substr_count.phpt
A ext/mbstring/tests/oom_mb_substr_length.phpt
A ext/pcre/tests/oom_preg_filter.phpt
A ext/pcre/tests/oom_preg_match_all.phpt
A ext/pcre/tests/oom_preg_match_captures.phpt
A ext/pcre/tests/oom_preg_replace.phpt
A ext/pcre/tests/oom_preg_replace_callback.phpt
A ext/pcre/tests/oom_preg_replace_callback_array.phpt
A ext/pcre/tests/oom_preg_split.phpt
A ext/session/tests/rfc1867_incomplete_class_reserved_props.phpt
A ext/session/tests/rfc1867_no_user_code.phpt
A ext/simplexml/tests/oom_array_cast.phpt
A ext/simplexml/tests/oom_json_encode.phpt
A ext/simplexml/tests/oom_xpath.phpt
A ext/soap/tests/oom_http_server.inc
A ext/soap/tests/oom_soap_response.inc
A ext/soap/tests/oom_soapclient_call.phpt
A ext/soap/tests/oom_soapclient_dorequest_chunked.phpt
A ext/soap/tests/oom_soapclient_dorequest_close.phpt
A ext/soap/tests/oom_soapclient_dorequest_content_length.phpt
A ext/soap/tests/oom_soapclient_response_headers.phpt
A ext/soap/tests/oom_soapclient_soapcall.phpt
A ext/soap/tests/oom_soapserver_handle_array.phpt
A ext/soap/tests/oom_soapserver_handle_headers.phpt
A ext/soap/tests/oom_soapserver_handle_parameters.phpt
A ext/standard/tests/array/oom_array_chunk.phpt
A ext/standard/tests/array/oom_array_map_zip.phpt
A ext/standard/tests/file/fread_oom_chunk_size.phpt
A ext/standard/tests/file/fread_oom_filter_chunk_size.phpt
A ext/standard/tests/file/fread_oom_length.phpt
A ext/standard/tests/file/oom_file.phpt
A ext/standard/tests/file/oom_file_get_contents.phpt
A ext/standard/tests/image/oom_getimagesize_cws.inc
A ext/standard/tests/image/oom_getimagesize_cws.phpt
A ext/standard/tests/image/oom_getimagesize_xbm.phpt
A ext/standard/tests/image/oom_getimagesizefromstring_cws.phpt
A ext/standard/tests/serialize/incomplete_class_raw_payload_markers.phpt
A ext/standard/tests/streams/oom_stream_copy_to_stream_memory.phpt
A ext/standard/tests/streams/oom_stream_get_contents.phpt
A ext/standard/tests/streams/stream_get_line_oom_chunk_size.phpt
A ext/standard/tests/strings/oom_explode.phpt
A ext/standard/tests/strings/oom_implode.phpt
A ext/standard/tests/strings/oom_levenshtein.phpt
A ext/standard/tests/strings/oom_nl2br.phpt
A ext/standard/tests/strings/oom_setcookie_value.phpt
A ext/standard/tests/strings/oom_str_getcsv.phpt
A ext/standard/tests/strings/oom_str_ireplace.phpt
A ext/standard/tests/strings/oom_str_replace.phpt
A ext/standard/tests/strings/oom_str_split.phpt
A ext/standard/tests/strings/oom_str_word_count.phpt
A ext/standard/tests/strings/oom_strtr.phpt
A ext/standard/tests/strings/oom_substr_replace.phpt
A ext/standard/tests/strings/oom_unpack.phpt
A ext/standard/tests/strings/wordwrap_memory_limit_002.phpt
A ext/standard/tests/strings/wordwrap_memory_limit_003.phpt
A ext/standard/tests/strings/wordwrap_memory_limit_004.phpt
A ext/tokenizer/tests/token_get_all_TOKEN_PARSE_oom_feedback.phpt
A ext/xml/tests/oom_xml_parse_attributes.phpt
A ext/xml/tests/oom_xml_parse_into_struct.phpt
A ext/xml/tests/oom_xml_parse_ns.phpt
A ext/xmlreader/tests/oom_xmlreader_getattribute.phpt
A ext/xmlreader/tests/oom_xmlreader_getattributeno.phpt
A ext/xmlreader/tests/oom_xmlreader_getattributens.phpt
A ext/xmlreader/tests/oom_xmlreader_lookupnamespace.phpt
A ext/xmlreader/tests/oom_xmlreader_readinnerxml.phpt
A ext/xmlreader/tests/oom_xmlreader_readouterxml.phpt
A ext/xmlreader/tests/oom_xmlreader_readstring.phpt
A ext/zend_test/tests/zend_test_handle_post_data.phpt
A ext/zlib/tests/oom_deflate_add.phpt
A ext/zlib/tests/oom_gzcompress.phpt
A ext/zlib/tests/oom_gzdecode.phpt
A ext/zlib/tests/oom_gzfile.phpt
A ext/zlib/tests/oom_gzgets.phpt
A ext/zlib/tests/oom_gzpassthru.phpt
A ext/zlib/tests/oom_inflate_add.phpt
A ext/zlib/tests/oom_readgzfile.phpt
A ext/zlib/tests/oom_zlib_inflate_filter.phpt
A sapi/cli/tests/oom_request_parsing_next_request.phpt
A sapi/cli/tests/oom_shutdown_function_next_request.phpt
A tests/basic/GHSA-2cv3-554h-jpmh_multipart.phpt
A tests/basic/GHSA-2cv3-554h-jpmh_urlencoded.phpt
A tests/basic/GHSA-f883-x959-3vr9_001.phpt
A tests/basic/GHSA-f883-x959-3vr9_002.phpt
A tests/basic/GHSA-f883-x959-3vr9_003.phpt
A tests/basic/GHSA-f883-x959-3vr9_004.phpt
A tests/basic/GHSA-f883-x959-3vr9_005.phpt
A tests/basic/GHSA-f883-x959-3vr9_006.phpt
A tests/basic/GHSA-f883-x959-3vr9_007.inc
A tests/basic/GHSA-f883-x959-3vr9_007.phpt
A tests/basic/GHSA-f883-x959-3vr9_008.phpt
A tests/basic/GHSA-f883-x959-3vr9_009.phpt
A tests/basic/GHSA-f883-x959-3vr9_010.phpt
A tests/basic/GHSA-f883-x959-3vr9_011.phpt
A tests/basic/oom_rfc1867.inc
A tests/basic/oom_rfc1867_array_upload_name.phpt
A tests/basic/oom_rfc1867_early_report.phpt
A tests/basic/oom_rfc1867_field_name.phpt
A tests/basic/oom_rfc1867_files.phpt
A tests/basic/oom_rfc1867_files_registration.phpt
A tests/basic/oom_rfc1867_files_registration_full_path.phpt
A tests/basic/oom_rfc1867_form_value.phpt
A tests/basic/oom_rfc1867_header_continuation.phpt
A tests/basic/oom_rfc1867_header_count.phpt
A tests/basic/oom_rfc1867_long_header_line.phpt
A tests/basic/oom_rfc1867_mb_encoding.phpt
A tests/basic/oom_rfc1867_mb_skipif.inc
A tests/basic/oom_rfc1867_post_vars.phpt
A tests/basic/oom_rfc1867_session_skipif.inc
A tests/basic/oom_rfc1867_skipif.inc
A tests/basic/oom_rfc1867_target.inc
A tests/basic/oom_rfc1867_upload_progress.phpt
A tests/output/oom_in_internal_output_handler.phpt
M Zend/tests/bug40770.phpt
M Zend/tests/bug54268.phpt
M Zend/tests/bug76846.phpt
M Zend/tests/fibers/get-return-after-bailout.phpt
M Zend/tests/gh11189.phpt
M Zend/tests/gh11189_1.phpt
M Zend/zend.c
M Zend/zend_API.c
M Zend/zend_API.h
M Zend/zend_alloc.c
M Zend/zend_alloc.h
M Zend/zend_attributes.c
M Zend/zend_attributes.h
M Zend/zend_builtin_functions.c
M Zend/zend_compile.c
M Zend/zend_exceptions.c
M Zend/zend_execute.c
M Zend/zend_execute_API.c
M Zend/zend_globals.h
M Zend/zend_hash.c
M Zend/zend_hash.h
M Zend/zend_objects.c
M Zend/zend_objects.h
M Zend/zend_operators.c
M Zend/zend_operators.h
M Zend/zend_smart_str.c
M Zend/zend_smart_str.h
M Zend/zend_string.c
M Zend/zend_string.h
M Zend/zend_types.h
M Zend/zend_vm_def.h
M Zend/zend_vm_execute.h
M ext/bz2/bz2.c
M ext/bz2/bz2_filter.c
M ext/curl/interface.c
M ext/curl/tests/responder/get.inc
M ext/date/lib/parse_date.c
M ext/date/lib/parse_date.re
M ext/date/lib/parse_iso_intervals.c
M ext/date/lib/parse_iso_intervals.re
M ext/dom/xpath.c
M ext/exif/exif.c
M ext/fileinfo/libmagic.patch
M ext/fileinfo/libmagic/cdf.c
M ext/filter/filter.c
M ext/filter/sanitizing_filters.c
M ext/gd/libgd/gd.c
M ext/gd/libgd/gd_gd2.c
M ext/gd/libgd/gd_tga.c
M ext/gd/libgd/gdhelpers.h
M ext/gd/libgd/wbmp.c
M ext/iconv/iconv.c
M ext/imap/php_imap.c
M ext/intl/converter/converter.c
M ext/intl/normalizer/normalizer_normalize.c
M ext/json/json_encoder.c
M ext/json/json_parser.y
M ext/json/json_scanner.re
M ext/libxml/libxml.c
M ext/mbstring/libmbfl/filters/mbfilter_qprint.c
M ext/mbstring/libmbfl/mbfl/mbfilter.c
M ext/mbstring/libmbfl/mbfl/mbfl_encoding.h
M ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c
M ext/mbstring/mb_gpc.c
M ext/mbstring/mbstring.c
M ext/mbstring/php_mbregex.c
M ext/mbstring/php_unicode.c
M ext/opcache/ZendAccelerator.c
M ext/opcache/ZendAccelerator.h
M ext/opcache/jit/zend_jit_arm64.dasc
M ext/opcache/jit/zend_jit_disasm.c
M ext/opcache/jit/zend_jit_x86.dasc
M ext/opcache/zend_file_cache.c
M ext/opcache/zend_persist.c
M ext/pcre/php_pcre.c
M ext/session/php_session.h
M ext/session/session.c
M ext/session/tests/rfc1867_sid_invalid.phpt
M ext/shmop/shmop.c
M ext/simplexml/simplexml.c
M ext/soap/php_encoding.c
M ext/soap/php_http.c
M ext/soap/soap.c
M ext/spl/spl_fixedarray.c
M ext/standard/array.c
M ext/standard/assert.c
M ext/standard/basic_functions.c
M ext/standard/basic_functions.h
M ext/standard/file.c
M ext/standard/head.c
M ext/standard/html.c
M ext/standard/image.c
M ext/standard/levenshtein.c
M ext/standard/pack.c
M ext/standard/php_incomplete_class.h
M ext/standard/php_var.h
M ext/standard/string.c
M ext/standard/tests/GHSA-96wq-48vp-hh57.phpt
M ext/standard/tests/streams/bug61115-1.phpt
M ext/standard/tests/strings/chunk_split_variation3.phpt
M ext/standard/tests/strings/str_pad_variation1.phpt
M ext/standard/url_scanner_ex.h
M ext/standard/url_scanner_ex.re
M ext/standard/var.c
M ext/standard/var_unserializer.re
M ext/tokenizer/tokenizer.c
M ext/xml/xml.c
M ext/xmlreader/php_xmlreader.c
M ext/xmlwriter/php_xmlwriter.c
M ext/zend_test/test.c
M ext/zend_test/test.stub.php
M ext/zend_test/test_arginfo.h
M ext/zend_test/tests/observer_bug81430_2.phpt
M ext/zend_test/tests/observer_bug81435.phpt
M ext/zend_test/tests/observer_error_01.phpt
M ext/zend_test/tests/observer_fiber_functions_03.phpt
M ext/zlib/zlib.c
M ext/zlib/zlib_filter.c
M main/SAPI.c
M main/SAPI.h
M main/main.c
M main/php_variables.c
M main/rfc1867.c
M main/streams/memory.c
M main/streams/streams.c
M run-tests.php
M sapi/fpm/tests/bug77023-pm-dynamic-blocking-sigquit.phpt
M sapi/fuzzer/fuzzer-sapi.c
M sapi/phpdbg/phpdbg.c
M tests/output/gh15179.phpt
Diff exceeded maximum size.