From 9764685da9363d7468e8d1f71d886f44c54f871d Mon Sep 17 00:00:00 2001 From: Pascal Quantin Date: Sat, 28 Nov 2015 14:47:28 +0100 Subject: RSVP: copy all rsvp_request_key info in file scope This is needed as it is later used for comparisons in the request hash table Bug: 11793 Change-Id: Ibf5f1bce68fa797e0a17dd3a8313332d093eb2fe Reviewed-on: https://code.wireshark.org/review/12257 Reviewed-by: Michael Mann Reviewed-by: Pascal Quantin --- epan/dissectors/packet-rsvp.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/epan/dissectors/packet-rsvp.c b/epan/dissectors/packet-rsvp.c index ed17ddb9eb..d1bcd6d164 100644 --- a/epan/dissectors/packet-rsvp.c +++ b/epan/dissectors/packet-rsvp.c @@ -7527,7 +7527,7 @@ dissect_rsvp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolea break; } - WMEM_COPY_ADDRESS(wmem_file_scope(), &request_key.source_info.source, &rsvph->source); + COPY_ADDRESS_SHALLOW(&request_key.source_info.source, &rsvph->source); request_key.source_info.udp_source_port = rsvph->udp_source_port; /* See if a request with this key already exists */ @@ -7539,6 +7539,31 @@ dissect_rsvp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolea if (!request_val) { new_request_key = (struct rsvp_request_key *)wmem_memdup( wmem_file_scope(), &request_key, sizeof(struct rsvp_request_key)); + switch (request_key.session_type) { + case RSVP_SESSION_TYPE_IPV4: + WMEM_COPY_ADDRESS(wmem_file_scope(), &new_request_key->u.session_ipv4.destination, + &request_key.u.session_ipv4.destination); + break; + case RSVP_SESSION_TYPE_IPV4_LSP: + WMEM_COPY_ADDRESS(wmem_file_scope(), &new_request_key->u.session_ipv4_lsp.destination, + &request_key.u.session_ipv4_lsp.destination); + break; + case RSVP_SESSION_TYPE_AGGREGATE_IPV4: + WMEM_COPY_ADDRESS(wmem_file_scope(), &new_request_key->u.session_agg_ipv4.destination, + &request_key.u.session_agg_ipv4.destination); + break; + case RSVP_SESSION_TYPE_IPV4_UNI: + WMEM_COPY_ADDRESS(wmem_file_scope(), &new_request_key->u.session_ipv4_uni.destination, + &request_key.u.session_ipv4_uni.destination); + break; + case RSVP_SESSION_TYPE_IPV4_E_NNI: + WMEM_COPY_ADDRESS(wmem_file_scope(), &new_request_key->u.session_ipv4_enni.destination, + &request_key.u.session_ipv4_enni.destination); + break; + default: + break; + } + WMEM_COPY_ADDRESS(wmem_file_scope(), &new_request_key->source_info.source, &rsvph->source); request_val = wmem_new(wmem_file_scope(), struct rsvp_request_val); request_val->value = conversation->index; -- cgit v1.2.1