[9.x] Fix infinite loop in blade compiler #45780
Merged
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.
During the latest bug fix in the blade compiler, I found that if the user passes invalid PHP syntax to blade tag calls, it will end up in an infinite loop that eventually fills up the memory and crashes.
php artisan view:cache
Str::after
return the whole input if it can not find the$needle
so we check if it is equal and break.If you comment out the line:
break;
the added test will result in an infinite loop.This is what the end user see in case of syntax error in the browser (after this fix):