Alessandro Bellina created STORM-1594:
-----------------------------------------

             Summary: org.apache.storm.tuple.Fields can throw NPE if given 
invalid field in selector
                 Key: STORM-1594
                 URL: https://issues.apache.org/jira/browse/STORM-1594
             Project: Apache Storm
          Issue Type: Bug
          Components: storm-core
            Reporter: Alessandro Bellina
            Priority: Minor


In class org.apache.storm.tuple.Fields, the select method gets the index of the 
field to select from the first argument (selector) by using .get. It doesn't 
set this result to an Integer and check for null (Map.get returns null if the 
key is not found).

When tuple.get happens, the parameter for tuple.get is an unboxed integer. The 
null cannot be unboxed to integer, causing an NPE. There is another method in 
Fields called fieldIndex which will throw an IllegalArgumentException in the 
case that the field in the selector isn't in the _index. 

{code}
public List<Object> select(Fields selector, List<Object> tuple) {
    List<Object> ret = new ArrayList<>(selector.size());        
    for(String s: selector) {
        ret.add(tuple.get(_index.get(s)));      
    }
    return ret;
}
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to