Ethereal-dev: [Ethereal-dev] SEGV in ethereal/tethereal
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Pierre-Yves Bonnetain <bonnetain@xxxxxxx>
Date: Sat, 26 Jan 2002 00:11:30 +0100
Hi everybody there,
I've been using ethereal for some time now, and today ran into a
SEGV. It
seems some NULL pointer gets dereferenced somewhere.
Linux 2.4.5, ethereal 0.8.20, gtk 1.2.6. Sniffing on a M$-heavy
network.
Here is the backtrace :
(gdb) run
Starting program: /tmp/ethereal-0.8.20/tethereal -r ../titi
Program received signal SIGSEGV, Segmentation fault.
(gdb) backtrace
#0 0x0 in ?? ()
#1 0x8141a24 in dissect_pipe_lanman (tvb=0x836e12c, pinfo=0x82cffa0,
parent_tree=0x0) at packet-smb-pipe.c:2129
#2 0x8141b93 in dissect_pipe_smb (tvb=0x836e12c, pinfo=0x82cffa0,
tree=0x0)
at packet-smb-pipe.c:2198
#3 0x813b122 in dissect_transact_params (pd=0x836cdd0 "", offset=114,
fd=0xbffff8c8, parent=0x0, tree=0x0, si={tid = 2059, uid = 10240,
mid = 42881, pid = 3399, conversation = 0x83712c0,
request_val = 0x8372ad0, continuation_val = 0x0, unicode = 1,
request = 0, is_interim_response = 0, parameter_count = 8,
data_offset = 8, data_count = 126, ddisp = 0,
trans_cmd = 0x83760f6 "LANMAN"}, max_data=190, SMB_offset=58,
DataOffset=64, DataCount=126, ParameterOffset=56,
ParameterCount=8,
SetupAreaOffset=111, SetupCount=0, TransactName=0x8374ac0
"\\PIPE\\LANMAN")
at packet-smb.c:10420
#4 0x813c413 in dissect_transact_smb (pd=0x836cdd0 "", offset=114,
fd=0xbffff8c8, parent=0x0, tree=0x0, si={tid = 2059, uid = 10240,
mid = 42881, pid = 3399, conversation = 0x83712c0,
request_val = 0x8372ad0, continuation_val = 0x0, unicode = 1,
request = 0, is_interim_response = 135897550,
parameter_count = 137199768, data_offset = -1073746868,
data_count = 135897476, ddisp = 0, trans_cmd = 0xbfffec54
"øà6\b ÿ,\b"},
max_data=190, SMB_offset=58) at packet-smb.c:11124
---Type <return> to continue, or q <return> to quit---
#5 0x813ce64 in dissect_smb (tvb=0x836e0f8, pinfo=0x82cffa0,
tree=0x0)
at packet-smb.c:12610
#6 0x81977ca in dissector_try_heuristic (sub_dissectors=0x82d0738,
tvb=0x836e0f8, pinfo=0x82cffa0, tree=0x0) at packet.c:708
#7 0x80eb0ee in dissect_netbios_payload (tvb=0x836e0f8,
pinfo=0x82cffa0,
tree=0x0) at packet-netbios.c:965
#8 0x80e8908 in dissect_nbss_packet (tvb=0x836e0c4, offset=4,
pinfo=0x82cffa0, tree=0x0, max_data=194, is_cifs=0) at
packet-nbns.c:1497
#9 0x80e8b85 in dissect_nbss (tvb=0x836e0c4, pinfo=0x82cffa0,
tree=0x0)
at packet-nbns.c:1672
#10 0x81971c3 in dissector_try_port (sub_dissectors=0x830d838,
port=139,
tvb=0x836e0c4, pinfo=0x82cffa0, tree=0x0) at packet.c:459
#11 0x814f3dd in decode_tcp_ports (tvb=0x836e090, offset=20,
pinfo=0x82cffa0,
tree=0x0, src_port=139, dst_port=1025) at packet-tcp.c:800
#12 0x81500ef in dissect_tcp (tvb=0x836e090, pinfo=0x82cffa0,
tree=0x0)
at packet-tcp.c:1101
#13 0x81971c3 in dissector_try_port (sub_dissectors=0x82d3ca8, port=6,
tvb=0x836e090, pinfo=0x82cffa0, tree=0x0) at packet.c:459
#14 0x80b940c in dissect_ip (tvb=0x836e05c, pinfo=0x82cffa0, tree=0x0)
at packet-ip.c:1109
#15 0x81971c3 in dissector_try_port (sub_dissectors=0x82d48c8,
port=2048,
tvb=0x836e05c, pinfo=0x82cffa0, tree=0x0) at packet.c:459
#16 0x8094bcb in ethertype (etype=2048, tvb=0x836e028,
offset_after_etype=14,
---Type <return> to continue, or q <return> to quit---
pinfo=0x82cffa0, tree=0x0, fh_tree=0x0, etype_id=630,
trailer_id=632)
at packet-ethertype.c:154
#17 0x8094952 in dissect_eth (tvb=0x836e028, pinfo=0x82cffa0,
tree=0x0)
at packet-eth.c:256
#18 0x81971c3 in dissector_try_port (sub_dissectors=0x82d5178, port=1,
tvb=0x836e028, pinfo=0x82cffa0, tree=0x0) at packet.c:459
#19 0x8096292 in dissect_frame (tvb=0x836e028, pinfo=0x82cffa0,
tree=0x0)
at packet-frame.c:123
#20 0x8197d9b in call_dissector (handle=0x82d51f0, tvb=0x836e028,
pinfo=0x82cffa0, tree=0x0) at packet.c:909
#21 0x8196d27 in dissect_packet (p_tvb=0x836e000,
pseudo_header=0x835df4c,
pd=0x836cdd0 "", fd=0xbffff8c8, tree=0x0) at packet.c:210
#22 0x8195b6b in epan_dissect_new (pseudo_header=0x835df4c,
data=0x836cdd0 "",
fd=0xbffff8c8, tree=0x0) at epan.c:91
#23 0x8183e90 in wtap_dispatch_cb_print (user=0xbffff958 "@þ+\b",
phdr=0x835df38, offset=229, pseudo_header=0x835df4c, buf=0x836cdd0
"")
at tethereal.c:1175
#24 0x818fbcf in wtap_loop (wth=0x835df20, count=0,
callback=0x8183e0c <wtap_dispatch_cb_print>, user=0xbffff958
"@þ+\b",
err=0xbffff964) at wtap.c:283
#25 0x8183819 in load_cap_file (cf=0x82bfe40, out_file_type=2)
at tethereal.c:927
#26 0x8182fc1 in main (argc=3, argv=0xbffffb14) at tethereal.c:585
To get things a little clearer :
(gdb) up
#1 0x8141a24 in dissect_pipe_lanman (tvb=0x836e12c, pinfo=0x82cffa0,
parent_tree=0x0) at packet-smb-pipe.c:2129
(gdb) list
2124 if (has_ent_count) {
2125 /*
2126 * Create a protocol
tree item for the
2127 * entry.
2128 */
2129 entry_item =
2130
(*lanman->resp_data_element_item)
2131 (tvb, pinfo,
data_tree, offset);
2132 entry_tree =
proto_item_add_subtree(
2133 entry_item,
(gdb) print *lanman
$1 = {lanman_num = -1, req = 0x823477c, req_data_item = 0,
ett_req_data = 0x0,
req_data = 0x823477c, req_aux_data = 0x823477c, resp = 0x823477c,
resp_data_item = 0, ett_resp_data = 0x0, resp_data_element_item = 0,
ett_resp_data_element_item = 0x0, resp_data_list = 0x8234788,
resp_aux_data = 0x823477c}
It's obvious that using *lanman->resp_data_element_item will send
us in no-no land :-)
The data file is HUGE, but I extracted the minimum to crash
properly
ethereal (that's two packets). It should be attached to this message.
Hope all that helps - and I would be glad (if possible, of course)
to get
a quick patch, in order to analyse my data !
Thanks !
-- Pierre-Yves Bonnetain
Consultant Sécurité -- B&A Consultants
Tél +33 (0) 563 277 241 -- Fax +33 (0) 563 277 245Ôò¡ ÿÿ õhN<2 07 ? $ÄÏÄ E YK@ ePÀ¨?³À¨? <