[SNMP4J] Infinite loop in DefaultMOTable cleanup method
Matthias Wiesmann
matthias.wiesmann at gmail.com
Tue Oct 11 04:24:30 CEST 2005
Hello,
I discovered a weakness in the error handling method
DefaultMOTable::cleanup. The problem lies in line 674:
MOMutableTableRow row = (MOMutableTableRow) model.getRow(cell.getIndex());
The problem is the following, if somebody puts a TableRow that is not
a subclass of MOMutableRow into the table, this fires a CastException.
The exception is caught in CommandProcessor::cleanup() at line 583,
the error printed out, but we do not exit the loop at line 589, so
cleanup is re-initated, the exception thrown again etc...
While I agree I did something stupid, the system should no go into an
infinite loop for this.
Best regards
Matthias Wiesmann
Typical output.
9346 [DefaultUDPTransportMapping_0.0.0.0/1616] ERROR
org.snmp4j.agent.CommandProcessor - java.lang.ClassCastException
9346 [DefaultUDPTransportMapping_0.0.0.0/1616] DEBUG
org.snmp4j.agent.mo.DefaultMOTable - Cleaning-up sub-request
(1.1.1.1.1.4.1 = 10000) for column:
org.snmp4j.agent.mo.MOMutableColumn[columnID=4,syntax=2,default=null,mode=]
java.lang.ClassCastException
at org.snmp4j.agent.mo.DefaultMOTable.cleanup(DefaultMOTable.java:674)
at org.snmp4j.agent.CommandProcessor$SetHandler.cleanup(CommandProcessor.java:579)
at org.snmp4j.agent.CommandProcessor$SetHandler.processPdu(CommandProcessor.java:459)
at org.snmp4j.agent.CommandProcessor.dispatchCommand(CommandProcessor.java:174)
at org.snmp4j.agent.CommandProcessor$Command.run(CommandProcessor.java:274)
at org.snmp4j.agent.CommandProcessor.processPdu(CommandProcessor.java:79)
at org.snmp4j.MessageDispatcherImpl.fireProcessPdu(MessageDispatcherImpl.java:534)
at org.snmp4j.MessageDispatcherImpl.dispatchMessage(MessageDispatcherImpl.java:248)
at org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:309)
at org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:270)
at org.snmp4j.transport.AbstractTransportMapping.fireProcessMessage(AbstractTransportMapping.java:82)
at org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread.run(DefaultUdpTransportMapping.java:279)
9348 [DefaultUDPTransportMapping_0.0.0.0/1616] ERROR
org.snmp4j.agent.CommandProcessor - java.lang.ClassCastException
9348 [DefaultUDPTransportMapping_0.0.0.0/1616] DEBUG
org.snmp4j.agent.mo.DefaultMOTable - Cleaning-up sub-request
More information about the SNMP4J
mailing list