I'm trying to write a bunch of small dissectors in lua for a custom
protocol (http://www.des-testbed.net/DES-SERT).
A DES-SERT message consists of a header and within the header there
are several user defined extension. Therefore i wrote a dissector in
lua for the message header itself and as long as no other dissectors
get involved everything is fine.
The idea was to let users register their extension-dissectors with the
main DES-SERT dissector and then hand of dissection of the extensions
to them.
The problem is, that right after the first user dissector returned i
get this error:
[Dissector bug, protocol DESSERT: tvbuff.c:665: failed assertion
"tvb && tvb->initialized"]
After this, no more item are added to the tree, but i see debug output
from the remaining user dissectors on the console. (also weird but
maybe not related, the main dissector seems to be called twice...)
The users register their extension dissectors with the following function:
function dessert_register_ext_dissector(ext_type, ext_name, dissector)
extension_types[ext_type] = ext_name
dessert_dissector_table:add(ext_type, dissector)
end
The main-dissector hands off extensions with:
-- extlen includes the 2byte extension header!
extdata_real_length = extlen:uint() - 2
extdata = buffer(offset, extdata_real_length)
dissector = dessert_dissector_table:get_dissector(exttype:uint())
if dissector ~= nil then
dissector:call(extdata:tvb(), pinfo, exttreeitem)
end
I really appreciate any comments/ideas you may have on this!
Please let me know if you need additional information (the actual lua
scripts pcaps, ...)
Thanks!
David
--
David Gutzmann