[
https://issues.apache.org/jira/browse/GROOVY-10634?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul King resolved GROOVY-10634.
--------------------------------
Fix Version/s: 3.0.11
Assignee: Paul King
Resolution: Fixed
Should be fixed. If you get a chance to check the snapshot version, that would
be great.
> Regular expressions cause groovysh 3.0.10, JDK 17 to crash
> ----------------------------------------------------------
>
> Key: GROOVY-10634
> URL: https://issues.apache.org/jira/browse/GROOVY-10634
> Project: Groovy
> Issue Type: Bug
> Components: Groovy Console
> Affects Versions: 3.0.10
> Environment: Groovy Shell (3.0.10, JVM: 17.0.2)
> Type ':help' or ':h' for help.
> ---------------------------------------------------------------------------
> groovy:000>
> Reporter: Charlie Hubbard
> Assignee: Paul King
> Priority: Major
> Fix For: 3.0.11
>
> Attachments: regex-matcher-group-4.txt, regex-matcher-group.txt,
> regular-expression-parsing-exception.txt
>
>
> Running some of these expressions in groovysh will crash the shell. The
> expectation is the print the exception to the console, and return to the next
> prompt without exiting the shell. (see attached for stack trace
> regular-expression-parsing-exception.txt).
> {code:java}
> groovy:000>
> "[email protected]".matches(/^([a-zA-Z0-9_-.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/)
> {code}
> This however, will NOT crash it (notice the escaping for the hyphen in the
> first [] expression):
> {code:java}
> groovy:000>
> "[email protected]".matches(/^([a-zA-Z0-9_\-.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/)
> {code}
> This will also crash it (stacktrace regex-matcher-group.txt):
> {code:java}
> groovy:000> m = (~/^((\d{4})(\s|-)?){4}$/).matcher( "4199 6238 0343 4807" )
> ===> java.util.regex.Matcher[pattern=^((\d{4})(\s|-)?){4}$ region=0,19
> lastmatch=]
> groovy:000> m.group(0) {code}
> If you don't call `.matches()` before calling `.group()` then it will produce
> the crash. However, if you do call `.matches()` the the following will crash
> it (stacktrace regex-matcher-group-4.txt):
> {code:java}
> groovy:000> m = (~/^((\d{4})(\s|-)?){4}$/).matcher( "4199 6238 0343 4807" )
> ===> java.util.regex.Matcher[pattern=^((\d{4})(\s|-)?){4}$ region=0,19
> lastmatch=]
> groovy:000> m.matches()
> ===> true
> groovy:000> m.group(0)
> ===> 4199 6238 0343 4807
> groovy:000> m.group(1)
> ===> 4807
> groovy:000> m.group(2)
> ===> 4807
> groovy:000> m.group(3)
> ===>
> groovy:000> m.group(4)
> ERROR java.lang.IndexOutOfBoundsException: {code}
--
This message was sent by Atlassian Jira
(v8.20.7#820007)