[jboss-jira] [JBoss JIRA] (AS7-6139) ModelTypeValidator is overly lenient about numeric types

Brian Stansberry (JIRA) jira-events at lists.jboss.org
Wed Jan 2 14:57:08 EST 2013


    [ https://issues.jboss.org/browse/AS7-6139?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12743274#comment-12743274 ] 

Brian Stansberry commented on AS7-6139:
---------------------------------------

That should work, yes. Some suggestions:

1) The matches() method should immediately return 'true' if validType == value.getType(). That would be more efficient even with the current code, but with the string manipulation this patch adds, it becomes more important. This method gets invoked a lot during boot, so we want high performance.

With this change, the default case can be changed to return false; since the if test will have already done what the default case is doing now.

2) Minor: Please convert the

if (x.compareTo(y) != 0) return false;
return true;

to 

return x.compareTo(y) == 0;

Otherwise our IDEs will suggest we make that change and won't give us the nice "Green" icon for the file until we do. :) 

3) Really minor: checkNumericType(value, type); can get the type from "value"; it doesn't need to be a param. Or, if you keep the type from the test in my 1) above you can just use it and not get it again in each case of the switch.
                
> ModelTypeValidator is overly lenient about numeric types
> --------------------------------------------------------
>
>                 Key: AS7-6139
>                 URL: https://issues.jboss.org/browse/AS7-6139
>             Project: Application Server 7
>          Issue Type: Bug
>          Components: Domain Management
>    Affects Versions: 7.1.3.Final (EAP)
>            Reporter: Brian Stansberry
>            Priority: Minor
>         Attachments: AS7-6139.patch
>
>
> ModelTypeValidator does some conversion checks to see if a passed in ModelNode meets the requirements of the valid type. These checks are overly lenient when it comes to numeric types as they rely only on the ModelNode.asXXX() methods not failing. But those methods don't fail even if the conversion involves a narrowing.
> For example, calling new ModelNode(Long.MAX_LONG).asInt() will not fail, but if the user passed in such a value for use in an attribute of type INT the stored value would not be what was expected.
> Note this is minor as in many, many cases ModelTypeValidator subclasses like IntRangeValidator are used, and those subclasses enforce ranges.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list