summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-11-28 14:47:28 +0100
committerPascal Quantin <pascal.quantin@gmail.com>2015-11-29 09:26:40 +0000
commit9764685da9363d7468e8d1f71d886f44c54f871d (patch)
treeb1f0a1cafa1cea1854d0a4a50eeb3c348112a2f5
parent135c8f050f7f0145b54d952b38ca73eb0d1060cf (diff)
downloadwireshark-9764685da9363d7468e8d1f71d886f44c54f871d.tar.gz
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 <mmann78@netscape.net> Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
-rw-r--r--epan/dissectors/packet-rsvp.c27
1 files changed, 26 insertions, 1 deletions
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;