FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Fix tokenization of escaped and single quoted input by czpilar · Pull Request #1375 · spring-projects/spring-shell · GitHub

Fix tokenization of escaped and single quoted input - #1375

Open
czpilar wants to merge 3 commits into
spring-projects:mainfrom
czpilar:patches/1374-command-parser-tokenizer
Open

Fix tokenization of escaped and single quoted input#1375
czpilar wants to merge 3 commits into
spring-projects:mainfrom
czpilar:patches/1374-command-parser-tokenizer

Conversation

czpilar commented Aug 27, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Replace the regex based whitespace splitting in DefaultCommandParser with a character-by-character state machine that understands backslash escaping and both double and single quote delimiters. The previous regex counted all quote characters equally, so an odd number of escaped quotes made the parser split inside a quoted value. Unbalanced quotes are now rejected with a clear error message instead of producing a mis-parsed command.

Resolves #1374

Replace the regex based whitespace splitting in DefaultCommandParser with
a character-by-character state machine that understands backslash escaping
and both double and single quote delimiters. The previous regex counted
all quote characters equally, so an odd number of escaped quotes made the
parser split inside a quoted value. Unbalanced quotes are now rejected
with a clear error message instead of producing a mis-parsed command.

Resolves spring-projects#1374

Signed-off-by: David Pilar <david@czpilar.net>
The quoting behavior was documented in 2.x but the section was lost in
later documentation rewrites. Document the rules implemented by
DefaultCommandParser in the command syntax page.

See spring-projects#1374

Signed-off-by: David Pilar <david@czpilar.net>
JLine's LineReader strips escape characters from the line returned by
readLine() when event expansion is enabled, so escaped quotes typed in
interactive mode never reached the command parser. In 3.x this did not
matter because the shell consumed the words of JLine's ParsedLine
instead of the returned raw line. Disable event expansion on the line
reader since escape resolution is the responsibility of the command
parser.

See spring-projects#1374

Signed-off-by: David Pilar <david@czpilar.net>
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DefaultCommandParser mis-tokenizes input containing escaped quotes (regression from 3.x)

1 participant


Back | FazBrowse Home | New Git URL