[ 
https://issues.apache.org/jira/browse/CLI-313?focusedWorklogId=767492&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-767492
 ]

ASF GitHub Bot logged work on CLI-313:
--------------------------------------

                Author: ASF GitHub Bot
            Created on: 07/May/22 02:18
            Start Date: 07/May/22 02:18
    Worklog Time Spent: 10m 
      Work Description: hungklu commented on code in PR #95:
URL: https://github.com/apache/commons-cli/pull/95#discussion_r867289570


##########
src/main/java/org/apache/commons/cli/DefaultParser.java:
##########
@@ -580,7 +580,7 @@ private boolean isArgument(final String token) {
      * Tests if the specified token is a Java-like property (-Dkey=value).
      */
     private boolean isJavaProperty(final String token) {
-        final String opt = token.substring(0, 1);
+        final String opt = token.length() > 0? token.substring(0, 1): null;

Review Comment:
   I'm starting to resume the work as I've been not feeling well.





Issue Time Tracking
-------------------

    Worklog Id:     (was: 767492)
    Time Spent: 40m  (was: 0.5h)

> StringIndexOutOfBoundsException thrown by CommandLineParser.parse() on 
> invalid input
> ------------------------------------------------------------------------------------
>
>                 Key: CLI-313
>                 URL: https://issues.apache.org/jira/browse/CLI-313
>             Project: Commons CLI
>          Issue Type: Bug
>          Components: Parser
>    Affects Versions: 1.5
>            Reporter: Dominik Stadler
>            Priority: Critical
>              Labels: exception, fuzzer
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> I discovered a case which can trigger a StringIndexOutOfBoundsException in 
> {{{}CommandLineParser.parse(){}}}.
> The following code-snippet reproduces it:
> {noformat}
>       CommandLineParser parser = new DefaultParser();
>       Options options = new Options();
>       parser.parse(options, new String[] {"-=-"}); {noformat}
>  
> When run against current commons-cli 1.5.0 as well as on latest git, it 
> causes the following stacktrace:
> {noformat}
> Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 
> 0, end 1, length 0
>     at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319)
>     at java.base/java.lang.String.substring(String.java:1874)
>     at 
> org.apache.commons.cli.DefaultParser.isJavaProperty(DefaultParser.java:583)
>     at 
> org.apache.commons.cli.DefaultParser.handleShortAndLongOption(DefaultParser.java:511)
>     at 
> org.apache.commons.cli.DefaultParser.handleToken(DefaultParser.java:542)
>     at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:712)
>     at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:679)
>     at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:660)
>     at 
> org.dstadler.cli.fuzz.Crash_4543e54e8e6239dec6cc2eea74b83d5de693ec71.main(Crash_4543e54e8e6239dec6cc2eea74b83d5de693ec71.java:13)
>  {noformat}
>  
> According to the JavaDoc, all failures to parse the arguments should lead to 
> a {{{}ParseException{}}}, but it seems this case is not handled currently.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to