Fix: [Script] Ensure the saved script strings are properly validated and terminated when being read from the save game #9336
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.
Motivation / Problem
Just set the string data length to 255 and fill it will all non-zeros. When buf[255] is also non-zeros, this will read beyond the bounds when making the string. Similarly the maximum value of _script_sl_byte can only be 255 though 256 bytes are allocated for the buffer.
Description
Allocate just enough memory for a buffer of _script_sl_byte long.
Perform a string validation on the string coming from the save game ensuring termination and valid Utf8 characters
Limitations
Potentially a game script that put some non-Utf8 characters in their strings would get different information when loading compared to what they saved. However, a string should be a valid string. If you want something else stored, use an array of integers.
Checklist for review
Some things are not automated, and forgotten often. This list is a reminder for the reviewers.