diff options
author | Michael Mann <mmann78@netscape.net> | 2017-01-24 22:17:49 -0500 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-01-26 02:04:32 +0000 |
commit | eeab554cf2e1d893f144081a762cc52782271e2e (patch) | |
tree | f5ecd2830e441cf50e733081bd523ca9a36d9a41 /epan/dissectors/packet-ldss.c | |
parent | ee177fedb4cdafe5c788b6972bac66ad6b316c94 (diff) | |
download | wireshark-eeab554cf2e1d893f144081a762cc52782271e2e.tar.gz |
ldss: Ensure ldss_file_request_t structure gets allocated
Bug: 13346
Change-Id: I83175fefeef5035039e378dd68ffdcd0787970b8
Reviewed-on: https://code.wireshark.org/review/19775
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-ldss.c')
-rw-r--r-- | epan/dissectors/packet-ldss.c | 26 |
1 files changed, 3 insertions, 23 deletions
diff --git a/epan/dissectors/packet-ldss.c b/epan/dissectors/packet-ldss.c index 56f33188fb..7ae78fd870 100644 --- a/epan/dissectors/packet-ldss.c +++ b/epan/dissectors/packet-ldss.c @@ -203,9 +203,6 @@ static expert_field ei_ldss_unrecognized_line = EI_INIT; static dissector_handle_t ldss_udp_handle; static dissector_handle_t ldss_tcp_handle; -/* Avoid creating conversations and data twice */ -static unsigned int highest_num_seen = 0; - /* When seeing a broadcast talking about an open TCP port on a host, create * a conversation to dissect anything sent/received at that address. Setup * protocol data so the TCP dissection knows what broadcast triggered it. */ @@ -397,9 +394,8 @@ dissect_ldss_broadcast(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) * These steps only need to be done once per packet, so a variable * tracks the highest frame number seen. Handles the case of first frame * being frame zero. */ - if (messageDetail != INFERRED_PEERSHUTDOWN && - (highest_num_seen == 0 || - highest_num_seen < pinfo->num)) { + if ((messageDetail != INFERRED_PEERSHUTDOWN) && + !PINFO_FD_VISITED(pinfo)) { ldss_broadcast_t *data; @@ -426,9 +422,6 @@ dissect_ldss_broadcast(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if (port > 0) { prepare_ldss_transfer_conv(data); } - - /* Record that the frame was processed */ - highest_num_seen = pinfo->num; } return tvb_captured_length(tvb); @@ -489,13 +482,11 @@ dissect_ldss_transfer (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void col_set_str(pinfo->cinfo, COL_INFO, "LDSS File Transfer (Requesting file - pull)"); - if (highest_num_seen == 0 || - highest_num_seen < pinfo->num) { + if (transfer_info->req == NULL) { already_dissected = FALSE; transfer_info->req = wmem_new0(wmem_file_scope(), ldss_file_request_t); transfer_info->req->file = wmem_new0(wmem_file_scope(), ldss_file_t); - highest_num_seen = pinfo->num; } ti = proto_tree_add_item(tree, proto_ldss, @@ -791,15 +782,6 @@ dissect_ldss (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U return 0; } -/* Initialize the highest num seen each time a - * new file is loaded or re-loaded in wireshark */ -static void -ldss_init_protocol(void) -{ - /* We haven't dissected anything yet. */ - highest_num_seen = 0; -} - void proto_register_ldss (void) { static hf_register_info hf[] = { @@ -960,8 +942,6 @@ proto_register_ldss (void) { proto_register_subtree_array(ett, array_length(ett)); expert_ldss = expert_register_protocol(proto_ldss); expert_register_field_array(expert_ldss, ei, array_length(ei)); - - register_init_routine(&ldss_init_protocol); } |