From 4d2e653901ab7bb17c9ed3269a930569d8ada5eb Mon Sep 17 00:00:00 2001 From: Anders Broman Date: Fri, 9 Oct 2009 07:24:33 +0000 Subject: From Didier Gautheron: Dissectors using call_dissector() function inside a 'if (tree) {}' block. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4107 svn path=/trunk/; revision=30415 --- epan/dissectors/packet-eigrp.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'epan/dissectors/packet-eigrp.c') diff --git a/epan/dissectors/packet-eigrp.c b/epan/dissectors/packet-eigrp.c index 917793df22..40270e0a8f 100644 --- a/epan/dissectors/packet-eigrp.c +++ b/epan/dissectors/packet-eigrp.c @@ -352,7 +352,7 @@ static void dissect_eigrp_ip6_ext(tvbuff_t *tvb, proto_tree *tree, proto_item *t static void dissect_eigrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_tree *eigrp_tree, *tlv_tree, *eigrp_flags_tree; + proto_tree *eigrp_tree = NULL, *tlv_tree, *eigrp_flags_tree; proto_item *ti; guint opcode, opcode_tmp; @@ -378,7 +378,6 @@ static void dissect_eigrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_tree_add_item(eigrp_tree, hf_eigrp_version, tvb, 0, 1, FALSE); proto_tree_add_item(eigrp_tree, hf_eigrp_opcode, tvb, 1, 1, FALSE); proto_tree_add_item(eigrp_tree, hf_eigrp_checksum, tvb, 2, 2, FALSE); - /* Decode the EIGRP Flags Field */ ti = proto_tree_add_item(eigrp_tree, hf_eigrp_flags, tvb, 4, 4, FALSE); @@ -392,12 +391,14 @@ static void dissect_eigrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_tree_add_item(eigrp_tree, hf_eigrp_sequence, tvb, 8, 4, FALSE); proto_tree_add_item(eigrp_tree, hf_eigrp_acknowledge, tvb, 12, 4, FALSE); proto_tree_add_item(eigrp_tree, hf_eigrp_as, tvb, 16, 4, FALSE); + } - if (opcode == EIGRP_SAP) { - call_dissector(ipxsap_handle, tvb_new_subset(tvb, EIGRP_HEADER_LENGTH, -1, -1), pinfo, eigrp_tree); - return; - } + if (opcode == EIGRP_SAP) { + call_dissector(ipxsap_handle, tvb_new_subset(tvb, EIGRP_HEADER_LENGTH, -1, -1), pinfo, eigrp_tree); + return; + } + if (tree) { while (tvb_reported_length_remaining(tvb, offset) > 0) { tlv = tvb_get_ntohs(tvb, offset); -- cgit v1.2.3