AbstractSnmpValue.allBytesDisplayable() IndexOutOfBound Exception

Description

I found this error debugging lldp dragon wave agent.
Wehn I call the method is displayble on an SnmpValue I got the exception.
The SnmpValue is an Octet String and should be decoded as HexString.
I fixed this in EnhancedLinkdCode capturing the exception. I do not want to dig into the core.snmp. In any case I run a simple test under the class...AbstractSnmpValueTest and I got the following exception...

java.lang.ArrayIndexOutOfBoundsException: 1
at org.opennms.netmgt.snmp.AbstractSnmpValue.allBytesUTF_8(AbstractSnmpValue.java:94)
at org.opennms.netmgt.snmp.AbstractSnmpValue.allBytesDisplayable(AbstractSnmpValue.java:34)
at org.opennms.netmgt.snmp.AbstractSnmpValueTest.testHexStringCF(AbstractSnmpValueTest.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Acceptance / Success Criteria

None

Lucidchart Diagrams

Activity

Show:

Benjamin Reed June 9, 2020 at 6:49 PM

fixed in foundation-2016

Benjamin Reed June 4, 2020 at 4:37 PM

Benjamin Reed June 3, 2020 at 3:42 PM

The revert says it was breaking Enlinkd tests, but integration passed in circle.

Seth Leger April 14, 2015 at 12:28 PM

This fix was breaking unit tests in foundation so I reverted it. Once we fix those tests we can recommit the change.

Reverted in 3d9a3e29cfc7d8beb64b23a096334a3110e6ce9d.

Seth Leger April 13, 2015 at 2:52 PM

This was caused because the UTF-8 detection function wasn't doing bounds checking for the end of the array. Fixed this and added a unit test based on Antonio's commit. Marking as fixed, committed to foundation branch.

commit 83fe2bf049d11c3d2ef9205be8a78b111e5737f3

Fixed

Details

Assignee

Reporter

Components

Sprint

Affects versions

Priority

PagerDuty

Created March 11, 2015 at 12:01 PM
Updated June 9, 2020 at 6:49 PM
Resolved June 9, 2020 at 6:49 PM