-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
IndexOutOfBoundsException in method io.github.jmcleodfoss.msg.NamedProperties::getPropertyName
Validation at the beginning of the method checks entries.length but does not check guids.length:
// NamedProperties.guids is initialized to an array with 6 elements;
// propertyIndex has value 6... resulting in IndexOutOfBoundsException
// FYI: Property::factory read propertyTag=0xFFFF_FFFF_8006_001F, propertyId=0x8006, propertyIndex=6
String getPropertyName(int propertyIndex)
{
if (propertyIndex >= entries.length)
return String.format("Out of bounds error (%d >= %d", propertyIndex, entries.length);
if (entries[propertyIndex].propertyType == EntryStreamEntry.PropertyType.STRING_NAMED_PROPERTY)
return stringsByOffset.get(entries[propertyIndex].nameIdentifierOrStringOffset);
if (PropertyLIDs.lids.keySet().contains(entries[propertyIndex].nameIdentifierOrStringOffset)) {
GUID guid = PropertyLIDs.guids.get(entries[propertyIndex].nameIdentifierOrStringOffset);
// FYI: `entries[propertyIndex]` has value "0x00008581 property index 0x0006 GUID index 0x0004 Numerical named property"
// FYI: `entries[propertyIndex].nameIdentifierOrStringOffset` has value 0x00008581
// FYI: `guid` has value "00062008-0000-0000-c000-000000000046" (which matches NamedProperties.guids[1] )
if (guid != null && guid.equals(guids[propertyIndex])) { // <------ java.lang.IndexOutOfBoundsException : Invalid array range: 6 to 6
return PropertyLIDs.lids.get(entries[propertyIndex].nameIdentifierOrStringOffset);
}
}
...Metadata
Metadata
Assignees
Labels
No labels