On Wed, Apr 16, 2008 at 09:22:38AM +1000, Andrew Hood wrote:
I think I have also tracked down one of the reasons wireshark crashes.
[...]
At line 595 oids.c calls smiRenderOID to format the node. The implicit node is not completely filled in, and wireshark/tshark crashes in libsmi. This is not totally unreasonable since implicit nodes should never be seen.
A crash _inside_ libsmi is not really acceptable; smiRenderOID should return NULL if it can't do what the caller wants. So I created a sample MIB and a little program to test this (see attachment) and I found where things go wrong.
Attached is a patch which causes smiRenderOID() to render the OID as a sequence of numbers in case it is called with SMI_RENDER_NAME or SMI_RENDER_QUALIFIED and the label of the node is not known. But this might not be the right thing to do; it might be better to fail by returning NULL so that the caller gets control of what should happen. On the other hand, we always append numeric OIDs.
/js