[pull] master from php:master#1084
Merged
Merged
Conversation
…dom access. The loop never advanced past the current match, so a cold item($n) with $n >= 1, or a backwards seek, returned the first match. Fixed by mirroring dom_map_get_elements_item(): advance to the next match once per remaining index. close GH-22701
* PHP-8.5: ext/dom: getElementsByClassName() item() returns wrong element on random access.
array_multisort() snapshotted each input array's buckets without holding a reference, then ran a comparator that under SORT_STRING invokes Stringable::__toString(); a callback that unset or reassigned the array freed its backing store and elements mid-sort, a use-after-free read in the comparator and a write-back through the freed table during the restructure. Hold a reference on each input HashTable for the duration of the sort and restructure the cached tables, mirroring zend_array_sort_ex() (GH-16648). HT_ALLOW_COW_VIOLATION allows the in-place repack under the held reference. Fixes GH-22678 Closes GH-22680
* PHP-8.4: Fix GH-22678: array_multisort() use-after-free on mutating comparator
* PHP-8.5: Fix GH-22678: array_multisort() use-after-free on mutating comparator
A user stream wrapper passed to a blocking or non-blocking FTP transfer can re-enter the engine from its stream_read/stream_write handler while the engine still holds the freed ftpbuf_t/databuf_t on the C stack, so the transfer resumes on freed memory. Guard every operation that opens a data connection with an in_use flag: ftp_close() throws while it is set, and the transfer and listing functions refuse to run. The non-blocking checks sit at the userland entry, before the wrapper mutates ftp->direction/stream, so a rejected re-entrant call cannot corrupt the outer transfer; the nb cleanup clears ftp->stream before closing the stream so a stream_close() that calls ftp_close() cannot double-close it. Closes GH-22400
* PHP-8.4: Fix use-after-free on re-entrant ftp_close() during a transfer
* PHP-8.5: Fix use-after-free on re-entrant ftp_close() during a transfer
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )