Wireshark-dev: [Wireshark-dev] 1.12.0rc2 : tshark crash when message is on 3 packets
From: wsgd <wsgd@xxxxxxx>
Date: Mon, 16 Jun 2014 22:44:21 +0200
Hello, My protocol (only to test this problem) specifications : tcp port 20640 message is 5 bytes long command line : tshark -r pb.cap -T text -V --> crash (see pb.1.12.0.txt) ** ERROR:print.c:838:get_field_data: code should not be reachedThis application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information. wireshark does not crash and display is ok tshark 1.10.6 does not crash and display is ok (see pb.1.10.6.txt) Plugin dissector code is into packet-tcp-5-bytes.c Regards, Olivier -- Wireshark Generic Dissector http://wsgd.free.fr
Attachment:
pb.pcap
Description: Binary data
Frame 1: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) Ethernet II, Src: 00:00:de:4b:da:02 (00:00:de:4b:da:02), Dst: 00:02:55:76:aa:eb (00:02:55:76:aa:eb) Internet Protocol Version 4, Src: 172.16.3.19 (172.16.3.19), Dst: 172.16.3.18 (172.16.3.18) Transmission Control Protocol, Src Port: 20640 (20640), Dst Port: 36179 (36179), Seq: 1, Ack: 1, Len: 4 Data (4 bytes) 0000 00 0f 00 16 .... Data: 000f0016 [Length: 4] Frame 2: 72 bytes on wire (576 bits), 72 bytes captured (576 bits) Ethernet II, Src: 00:00:de:4b:da:02 (00:00:de:4b:da:02), Dst: 00:02:55:76:aa:eb (00:02:55:76:aa:eb) Internet Protocol Version 4, Src: 172.16.3.19 (172.16.3.19), Dst: 172.16.3.18 (172.16.3.18) Transmission Control Protocol, Src Port: 20640 (20640), Dst Port: 36179 (36179), Seq: 5, Ack: 1, Len: 18 [2 Reassembled TCP Segments (22 bytes): #1(4), #2(18)] Data: 000f001600 Data: 0000008001 Data: 0000888888 Data: 8000a00004 Frame 3: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) Ethernet II, Src: 00:00:de:4b:da:02 (00:00:de:4b:da:02), Dst: 00:02:55:76:aa:eb (00:02:55:76:aa:eb) Internet Protocol Version 4, Src: 172.16.3.19 (172.16.3.19), Dst: 172.16.3.18 (172.16.3.18) Transmission Control Protocol, Src Port: 20640 (20640), Dst Port: 36179 (36179), Seq: 23, Ack: 1, Len: 4 [2 Reassembled TCP Segments (6 bytes): #2(2), #3(4)] Data: 93e0001000 Frame 4: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) Ethernet II, Src: 00:00:de:4b:da:02 (00:00:de:4b:da:02), Dst: 00:02:55:76:aa:eb (00:02:55:76:aa:eb) Internet Protocol Version 4, Src: 172.16.3.19 (172.16.3.19), Dst: 172.16.3.18 (172.16.3.18) Transmission Control Protocol, Src Port: 20640 (20640), Dst Port: 36179 (36179), Seq: 27, Ack: 1, Len: 3 Data (4 bytes) 0000 07 03 01 01 .... Data: 07030101 [Length: 4] Frame 5: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) Ethernet II, Src: 00:00:de:4b:da:02 (00:00:de:4b:da:02), Dst: 00:02:55:76:aa:eb (00:02:55:76:aa:eb) Internet Protocol Version 4, Src: 172.16.3.19 (172.16.3.19), Dst: 172.16.3.18 (172.16.3.18) Transmission Control Protocol, Src Port: 20640 (20640), Dst Port: 36179 (36179), Seq: 30, Ack: 1, Len: 4 [3 Reassembled TCP Segments (8 bytes): #3(1), #4(3), #5(4)] Data: 0703010100 Frame 6: 81 bytes on wire (648 bits), 81 bytes captured (648 bits) Ethernet II, Src: 00:00:de:4b:da:02 (00:00:de:4b:da:02), Dst: 00:02:55:76:aa:eb (00:02:55:76:aa:eb) Internet Protocol Version 4, Src: 172.16.3.19 (172.16.3.19), Dst: 172.16.3.18 (172.16.3.18) Transmission Control Protocol, Src Port: 20640 (20640), Dst Port: 36179 (36179), Seq: 34, Ack: 1, Len: 27 [2 Reassembled TCP Segments (30 bytes): #5(3), #6(27)] Data: 11001f0001 Data: 581d66f400 Data: 0000000000 Data: 0000060000 Data: 0004000400 Data: 1000000000
Frame 1: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) Ethernet II, Src: 00:00:de:4b:da:02 (00:00:de:4b:da:02), Dst: 00:02:55:76:aa:eb (00:02:55:76:aa:eb) Internet Protocol Version 4, Src: 172.16.3.19 (172.16.3.19), Dst: 172.16.3.18 (172.16.3.18) Transmission Control Protocol, Src Port: 20640 (20640), Dst Port: 36179 (36179), Seq: 1, Ack: 1, Len: 4 Data (4 bytes) 0000 00 0f 00 16 .... Data: 000f0016 [Length: 4] Frame 2: 72 bytes on wire (576 bits), 72 bytes captured (576 bits) Ethernet II, Src: 00:00:de:4b:da:02 (00:00:de:4b:da:02), Dst: 00:02:55:76:aa:eb (00:02:55:76:aa:eb) Internet Protocol Version 4, Src: 172.16.3.19 (172.16.3.19), Dst: 172.16.3.18 (172.16.3.18) Transmission Control Protocol, Src Port: 20640 (20640), Dst Port: 36179 (36179), Seq: 5, Ack: 1, Len: 18 [2 Reassembled TCP Segments (22 bytes): #1(4), #2(18)] Data: 000f001600 Data: 0000008001 Data: 0000888888 Data: 8000a00004 Frame 3: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) Ethernet II, Src: 00:00:de:4b:da:02 (00:00:de:4b:da:02), Dst: 00:02:55:76:aa:eb (00:02:55:76:aa:eb) Internet Protocol Version 4, Src: 172.16.3.19 (172.16.3.19), Dst: 172.16.3.18 (172.16.3.18) Transmission Control Protocol, Src Port: 20640 (20640), Dst Port: 36179 (36179), Seq: 23, Ack: 1, Len: 4 [2 Reassembled TCP Segments (6 bytes): #2(2), #3(4)] Data: 93e0001000 Frame 4: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) Ethernet II, Src: 00:00:de:4b:da:02 (00:00:de:4b:da:02), Dst: 00:02:55:76:aa:eb (00:02:55:76:aa:eb) Internet Protocol Version 4, Src: 172.16.3.19 (172.16.3.19), Dst: 172.16.3.18 (172.16.3.18) Transmission Control Protocol, Src Port: 20640 (20640), Dst Port: 36179 (36179), Seq: 27, Ack: 1, Len: 3 Data (4 bytes)
#include "config.h" #include <glib.h> #include <epan/packet.h> #include <epan/dissectors/packet-tcp.h> void proto_register_tcp_5_bytes(void); void proto_reg_handoff_tcp_5_bytes(void); static int proto_tcp_5_bytes = -1; static int hf_tcp_5_bytes_data_data = -1; static gint ett_tcp_5_bytes = -1; static int dissect_tcp_5_bytes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) { guint offset = 0; while(offset < tvb_reported_length(tvb)) { const gint available = tvb_reported_length_remaining(tvb, offset); const gint len = 5; if( available < len ) { /* we ran out of data: ask for more */ pinfo->desegment_offset = offset; pinfo->desegment_len = DESEGMENT_ONE_MORE_SEGMENT; return offset; } col_set_str(pinfo->cinfo, COL_INFO, "tcp-5-bytes"); if (tree) { proto_tree_add_item(tree, hf_tcp_5_bytes_data_data, tvb, offset, len, 0); } offset += (guint)len; } /* if we get here, then the end of the tvb coincided with the end of a string. Happy days. */ return tvb_length(tvb); } void proto_register_tcp_5_bytes(void) { static hf_register_info hf[] = { { &hf_tcp_5_bytes_data_data, { "Data", "tcp_5_bytes.data.data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, }; static gint *ett[] = { &ett_tcp_5_bytes, }; proto_tcp_5_bytes = proto_register_protocol("DG tcp_5_bytes Protocol", "tcp_5_bytes", "tcp_5_bytes"); proto_register_field_array(proto_tcp_5_bytes, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); } void proto_reg_handoff_tcp_5_bytes(void) { dissector_handle_t tcp_5_bytes_handle; tcp_5_bytes_handle = new_create_dissector_handle(dissect_tcp_5_bytes, proto_tcp_5_bytes); dissector_add_uint("tcp.port", 20640, tcp_5_bytes_handle); }
- Follow-Ups:
- Re: [Wireshark-dev] 1.12.0rc2 : tshark crash when message is on 3 packets
- From: Pascal Quantin
- Re: [Wireshark-dev] 1.12.0rc2 : tshark crash when message is on 3 packets
- Prev by Date: Re: [Wireshark-dev] How to clone 1.12 branch source code
- Next by Date: Re: [Wireshark-dev] How to clone 1.12 branch source code
- Previous by thread: Re: [Wireshark-dev] iSER dissector submission question
- Next by thread: Re: [Wireshark-dev] 1.12.0rc2 : tshark crash when message is on 3 packets
- Index(es):