Hi, * Can you test it against 0.99.5pre1? I cannot make it crash (works OK for me), could you send the capture file that does crash? Could you eventually send in also the output of wireshark -v
Thanks Luis BTW sub_buf = buffer( 4, buffer:len() - 4 ):tvb() is the same as sub_buf = buffer(4):tvb() On 1/22/07, Scott Robinson <[EMAIL PROTECTED]> wrote: > Hi, > > I've been using Lua to create a dissector for a protocol that has IP > encapsulated inside TCP with an additional header. Everything works fine > until I try to create a new tvb off from a tvbsubrange. When I do this, > Wireshark crashes. The new tvb appeared correct when I added debug > statements (pointing at the correct data, and length are correct). > > The Lua and Wireshark docs refered to the Tvb.new_subset function to create > a new sub tvb for an encapsulated protocol. I couldn't get that to work and > used something like buffer(4,n):tvb(). > > I've only been looking at the Wireshark and Lua code for a short time now, > so I'm hoping I'm just coding something up wrong. Any pointers would be > greatly appreciated. > > Here's a sample of the code that was crashing. If I comment out the line > that tries to pass the new sub tvb to the ip dissector, or just pass the > original buffer to the ip dissector, wireshark doesn't crash (although it > doesn't decode like I need it too) > > Thanks. > -Scott > -- Define our protocol > my_proto = Proto("myproto", "MINE", "My Protocol") > > > -- Create a function to dissect my_proto > function my_proto.dissector( buffer, pinfo, tree ) > local subtree = tree:add( my_proto, buffer, "My Proto Header" ) > > subtree:add( buffer(0,1), "Version: " .. buffer(0,1):uint() ) > subtree:add( buffer(1,1), "Type: " .. buffer(1,1):uint() ) > subtree:add( buffer(2,2), "Sequence: " .. buffer(2,2):uint() ) > > ip_dissector = Dissector.get("ip") > > -- skip over the header in front of the encapsulated ip packet > sub_buf = buffer( 4, buffer:len() - 4 ):tvb() > > ip_dissector:call( sub_buf, pinfo, tree ) > > end > > -- load the tcp port table > tcp_table = DissectorTable.get("tcp.port") > > -- register our protocol > tcp_table:add(7000, my_proto) > > > > > _______________________________________________ > Wireshark-dev mailing list > Wireshark-dev@wireshark.org > http://www.wireshark.org/mailman/listinfo/wireshark-dev > > -- This information is top security. When you have read it, destroy yourself. -- Marshall McLuhan _______________________________________________ Wireshark-dev mailing list Wireshark-dev@wireshark.org http://www.wireshark.org/mailman/listinfo/wireshark-dev