rendered paste bodyIndex: opennms-joesnmp/src/main/java/org/opennms/protocols/snmp/SnmpPduTrap.java
===================================================================
--- opennms-joesnmp/src/main/java/org/opennms/protocols/snmp/SnmpPduTrap.java (revision 5337)
+++ opennms-joesnmp/src/main/java/org/opennms/protocols/snmp/SnmpPduTrap.java (working copy)
@@ -301,10 +301,13 @@
* Set's the timeticks in the trap.
*
* @param ts
- * The timeticks for the trap.
+ * The timeticks (centiseconds) for the trap, not to exceed 2^32-1.
*
*/
- public void setTimeStamp(long ts) {
+ public void setTimeStamp(long ts) throws IllegalArgumentException {
+ if ((ts < 0) || (ts > 4294967295L)) {
+ throw new IllegalArgumentException("Value must be within bounds for an unsigned 32-bit integer");
+ }
m_tstamp = ts;
}
Index: opennms-snmp/opennms-snmp-api/src/main/java/org/opennms/netmgt/snmp/SnmpV1TrapBuilder.java
===================================================================
--- opennms-snmp/opennms-snmp-api/src/main/java/org/opennms/netmgt/snmp/SnmpV1TrapBuilder.java (revision 5337)
+++ opennms-snmp/opennms-snmp-api/src/main/java/org/opennms/netmgt/snmp/SnmpV1TrapBuilder.java (working copy)
@@ -43,6 +43,11 @@
void setSpecific(int specific);
+ /**
+ *
+ * @param timeStamp
+ * A timestamp value, in TimeTicks (centiseconds), not to exceed 2^32-1
+ */
void setTimeStamp(long timeStamp);
}
Index: opennms-services/src/test/java/org/opennms/netmgt/trapd/TrapdTest.java
===================================================================
--- opennms-services/src/test/java/org/opennms/netmgt/trapd/TrapdTest.java (revision 5337)
+++ opennms-services/src/test/java/org/opennms/netmgt/trapd/TrapdTest.java (working copy)
@@ -50,7 +50,17 @@
pdu.setEnterprise(SnmpObjId.get(".1.3.6.1.4.1.5813"));
pdu.setGeneric(1);
pdu.setSpecific(0);
- pdu.setTimeStamp(System.currentTimeMillis());
+
+ boolean boundsCheckOK = false;
+ try {
+ pdu.setTimeStamp(4398046511104L); // 4398046511104L == 2^42 > 2^32-1
+ } catch (IllegalArgumentException iae) {
+ boundsCheckOK = true;
+ }
+ if (! boundsCheckOK) {
+ throw new Exception("Strategy class TRAPv1.setTimestamp() did not except on a TimeTicks value > 2^32-1");
+ }
+ pdu.setTimeStamp(666L);
pdu.setAgentAddress(localAddr);
@@ -76,5 +86,6 @@
assertEquals(0, ea.unanticipatedEvents().size());
}
+
}