You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by "Guangtai Liang (Commented) (JIRA)" <xe...@xml.apache.org> on 2012/02/14 05:39:00 UTC

[jira] [Commented] (XERCESJ-1554) An incomplete fix for the NPE bugs in IdentityConstraint.java

    [ https://issues.apache.org/jira/browse/XERCESJ-1554?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13207497#comment-13207497 ] 

Guangtai Liang commented on XERCESJ-1554:
-----------------------------------------

Please refer to the invalid schema file which was provided for reproducing the NPE issue ( https://issues.apache.org/jira/browse/XERCESJ-1078)  

The detailed description about this issue is copied here : 

"in case of an invalid schema file with the error "s4s-elt-must-match.2"
(The content of 'identity constraint' must match (annotation?, selector, field+). Not enough elements were found.) the attribute fSelector might be null and thus the method getSelectorStr() causes a NPE.

In my case, anylsing invalid schema files (as good as possible) it is important not to have this exception, so I'm working with my own patched version of Xerces2-J. It would be nice if you would fix this somewhen.

Example from schema test suite to preproduce:
msxsdtest\identityConstraint\idB059.xsd

My fix is quite simple: just check on null:

Old:
        return fSelector.toString();

New:
        return fSelector == null ? null : fSelector.toString();
"

If fSelector can be null in such case, I think the null-check should also be made before the dereference on fSelector in the method "equals". 


                
> An incomplete fix for the NPE bugs in IdentityConstraint.java
> -------------------------------------------------------------
>
>                 Key: XERCESJ-1554
>                 URL: https://issues.apache.org/jira/browse/XERCESJ-1554
>             Project: Xerces2-J
>          Issue Type: Bug
>          Components: Other
>            Reporter: Guangtai Liang
>            Priority: Critical
>              Labels: incomplete_fix, missing_fixes
>   Original Estimate: 10m
>  Remaining Estimate: 10m
>
> The fix revision 320527 was aimed to remove an NPE bug on the "this.fSelector" in the method "getSelectorStr" of the file 
> "/xerces/java/trunk/src/org/apache/xerces/impl/xs/identity/IdentityConstraint.java" , but it is incomplete. 
> Since the "this.fSelector" is a class field and also could be null during the run-time execution, it should also be null-checked before being dereferenced in other methods. 
> The buggy code locations the same fix needs to be applied at are as bellows: 
> Line 148  of the method "equals"; 
> public boolean equals(IdentityConstraint id) {
>         boolean areEqual = fIdentityConstraintName.equals(id.fIdentityConstraintName);
>         if(!areEqual) return false;
>         areEqual = fSelector.toString().equals(id.fSelector.toString());
>         if(!areEqual) return false;
>         areEqual = (fFieldCount == id.fFieldCount);
>         if(!areEqual) return false;
>         for(int i=0; i<fFieldCount; i++)
>             if(!fFields[i].toString().equals(id.fFields[i].toString())) return false;
>         return true;
>     } // equals

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: j-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org