[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