Fix ArgumentNullException for: $filter=property in [''] #3122
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.
Issues
This pull request fixes #3092
Description
This PR addresses an issue where the OData URI parser throws an
ArgumentNullException
when encountering a list with empty string insquare brackets
.For example, the following query will throw an ArgumentNullException:
/People?$filter=Name in ['']
/People?$filter=Name in [ ' ' ]
/People?$filter=Name in [ \"\", ' ' ]
/People?$filter=Name in [ \"\", '' ]
/People?$filter=Name in [\"\"]
/People?$filter=Name in [ \"\", \" \" ]
/People?$filter=Name in [ \"\" ]
/People?$filter=Name in [ '' , ' ' ]
Change
This change ensures the
square brackets
are handle the same way asparentheses
when constructingCollectionNode
inGetCollectionOperandFromToken
method. This method calls the following methods to handle Single and Double quotes:ProcessSingleQuotedStringItem
is called to handle single-quoted string items within a collection. This method convertssingle-quoted
strings todouble-quoted
strings, ensuring compatibility with JSON format. It manages the escaping of single quotes by unescaping double single quotes and escaping double quotes. For example, it converts ''' to "" and 'ghi''' to "ghi'"ProcessDoubleQuotedStringItem
is then called to process double-quoted string items within a collection. This method ensures that the string is properly escaped for JSON format, handling the escaping of double quotes and backslashes. For example, it converts "" to "" to avoid passing an empty string to theConstantNode
.Checklist (Uncheck if it is not completed)
Additional work necessary
If documentation update is needed, please add "Docs Needed" label to the issue and provide details about the required document change in the issue.