Updating a configuration containing a property configured with unbound array 
size
---------------------------------------------------------------------------------

                 Key: FELIX-1164
                 URL: https://issues.apache.org/jira/browse/FELIX-1164
             Project: Felix
          Issue Type: Bug
          Components: Web Console
    Affects Versions: webconsole-1.2.10
            Reporter: Felix Meschberger
            Assignee: Felix Meschberger
             Fix For: webconsole-1.2.12


To configure a property to be stored as an unbounded array, the cardinality of 
the property must be configured as Integer.MIN_VALUE in the metatype 
definition. This may cause a failure to update such a configuration in the 
ConfigManager class where the following construct is used to check whether the 
temporary vector must be resized:

                int maxSize = Math.abs( ad.getCardinality() );
                if ( vec.size() > maxSize )
                {
                    vec.setSize( maxSize );
                }

The problem is that Math.abs(Integer.MIN_VALUE) is still Integer.MIN_VALUE and 
thus negative (see also the Javadoc of the Math.abs(int) method). This causes 
the test to pass but calling Vector.setSize(int) with a negative value causes 
an ArrayIndexOutOfBoundsException.

The fix is to ensure the maxSize is not negative before resetting the size. 
Since the negative value in this case means "unbounded" anyway, we can safely 
skip resizing the vector.

-- 
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