Don't allow invalid chars in Symbol objects. #765
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.
What
Validate that large Symbol values do not contain chars that are not allowed in Symbol types.
Why
The conversion from str to Symbol falls back to the object path if a SymbolSmall cannot be created. The Host::symbol_new_from_slice function though does not do the required validation:
Symbol::new_from_slice creates an
ScSymbol
and puts it into the environment, but ScSymbol is (currently) allowed to contain invalid chars:This patch changes symbol_new_from_slice to prevent invalid ScSymbols from being injected into the environment.
This patch adds several test cases. Only the
invalid_chars
case was failing. The others I added because it wasn't obvious to me whether the cases were being checked or not; especially it was not obvious to me from the docs whether zero-length symbols are allowed (they are). The docs for Symbol should be updated to indicate zero-length symbols are ok, but that patch needs to live in the sdk.Known limitations
na