[ 
https://issues.apache.org/jira/browse/CLI-206?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12889039#action_12889039
 ] 

Emmanuel Bourg commented on CLI-206:
------------------------------------

Thank you for the detailed report. This issue has been fixed on the trunk, it's 
actually a duplicate of CLI-204.

> If Parser.parse is called with a Properties parameter that contains an option 
> not defined, get a NPE
> ----------------------------------------------------------------------------------------------------
>
>                 Key: CLI-206
>                 URL: https://issues.apache.org/jira/browse/CLI-206
>             Project: Commons CLI
>          Issue Type: Bug
>          Components: Parser
>    Affects Versions: 1.2
>            Reporter: Denis Haskin
>             Fix For: 1.3
>
>
> See junit test below.
> The problems appears to be in 
> org.apache.commons.cli.Parser.processProperties, around lines 252 - 259.
> It's trying to get the Option object for the property's name, but if none was 
> specified, then opt is null and the attempt to call opt.hasArg() at line 259 
> throws an NPE.
> The fix should be to skip the remainder of the clause if the Option object is 
> null.
> Example unit test:
> {code:java}
> package test;
> import java.util.Properties;
> import org.apache.commons.cli.OptionBuilder;
> import org.apache.commons.cli.Options;
> import org.apache.commons.cli.PosixParser;
> import org.junit.Test;
> public class CommonsCliBugTest {
>     @Test
>     public void testCommonsCliOkay() throws Exception {
>         String[] args = new String[] {};
>         Properties p = new Properties();
>         p.setProperty("alpha", "beta");
>         Options options = new Options();
>         
> options.addOption(OptionBuilder.withLongOpt("alpha").hasArg().withArgName("ALPHA").create());
>         PosixParser parser = new PosixParser();
>         parser.parse(options, args, p);
>     }
>     @Test
>     public void testCommonsCliFails() throws Exception {
>         String[] args = new String[] {};
>         Properties p = new Properties();
>         // Note this property is not specified as a valid option
>         p.setProperty("gamma", "beta");
>         Options options = new Options();
>         
> options.addOption(OptionBuilder.withLongOpt("alpha").hasArg().withArgName("ALPHA").create());
>         PosixParser parser = new PosixParser();
>         parser.parse(options, args, p);
>     }
> }
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to