fix: handle definition cache delete races safely#479
Open
jinhoe-kim-imweb-me wants to merge 2 commits intoezyang:masterfrom
Open
fix: handle definition cache delete races safely#479jinhoe-kim-imweb-me wants to merge 2 commits intoezyang:masterfrom
jinhoe-kim-imweb-me wants to merge 2 commits intoezyang:masterfrom
Conversation
Author
|
FYI: after the follow-up test change, the The remaining PHP 8.5 failures in CI appear to come from existing upstream deprecations outside this change, for example:
So the current red PHP 8.5 job does not look specific to this PR's serializer changes. |
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
remove(),flush(), andcleanup()through a sharedsafeUnlink()helperunlink()failsBackground
Fixes #442.
cleanup()already checksfile_exists()before callingunlink(), but that still leaves a small TOCTOU window when multiple processes clean the same serializer cache directory at the same time.remove()andflush()still callunlink()directly as well.This change keeps the existing warning signal for real delete failures while avoiding noisy warnings when another process has already removed the cache file.
Tests
php tests/index.php --file=HTMLPurifier/DefinitionCache/SerializerTest.php --txt