aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-rsvd.c
diff options
context:
space:
mode:
authorRichard Sharpe <realrichardsharpe@gmail.com>2015-02-16 07:48:57 -0800
committerPascal Quantin <pascal.quantin@gmail.com>2015-02-16 18:52:24 +0000
commitfebc2e145359c8ebe2e0c1d5a02fa972c5e54d5d (patch)
treea84db1661022ea875bdd9a295168597d3a80567a /epan/dissectors/packet-rsvd.c
parent63317550297e8cea3ca7da7d21dea6c8ccc0396f (diff)
Fix a portability problem raised by Guy Harris. My first implementation would
not work on 32-bit platforms because I assumed that pointers were 64-bit items. I have now moved to a slightly different scheme suggested by Evan Huus. Change-Id: I34f4dceea9952d5633603e71a8e8ae8f4b9154cc Signed-of-by: Richard Sharpe <realrichardsharpe@gmail.com> Reviewed-on: https://code.wireshark.org/review/7179 Petri-Dish: Richard Sharpe <realrichardsharpe@gmail.com> Reviewed-by: Evan Huus <eapache@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Richard Sharpe <realrichardsharpe@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-rsvd.c')
-rw-r--r--epan/dissectors/packet-rsvd.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/epan/dissectors/packet-rsvd.c b/epan/dissectors/packet-rsvd.c
index e7eb2ac27e..9d3fcaeac4 100644
--- a/epan/dissectors/packet-rsvd.c
+++ b/epan/dissectors/packet-rsvd.c
@@ -196,8 +196,8 @@ dissect_RSVD_TUNNEL_SCSI(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *pare
if (!rsvd_conv_data) {
rsvd_conv_data = wmem_new(wmem_file_scope(), rsvd_conv_data_t);
rsvd_conv_data->tasks = wmem_map_new(wmem_file_scope(),
- g_direct_hash,
- g_direct_equal);
+ wmem_int64_hash,
+ g_int64_equal);
rsvd_conv_data->itl = wmem_tree_new(wmem_file_scope());
rsvd_conv_data->conversation = conversation;
conversation_add_proto_data(conversation, proto_rsvd, rsvd_conv_data);
@@ -205,14 +205,17 @@ dissect_RSVD_TUNNEL_SCSI(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *pare
rsvd_conv_data->task = NULL;
if (!pinfo->fd->flags.visited) {
+ guint64 *key_copy = wmem_new(wmem_file_scope(), guint64);
+
+ *key_copy = request_id;
rsvd_conv_data->task = wmem_new(wmem_file_scope(), rsvd_task_data_t);
rsvd_conv_data->task->request_frame=pinfo->fd->num;
rsvd_conv_data->task->response_frame=0;
rsvd_conv_data->task->itlq = NULL;
- wmem_map_insert(rsvd_conv_data->tasks, (const void *)request_id,
+ wmem_map_insert(rsvd_conv_data->tasks, (const void *)key_copy,
rsvd_conv_data->task);
} else {
- rsvd_conv_data->task = (rsvd_task_data_t *)wmem_map_lookup(rsvd_conv_data->tasks, (void *)request_id);
+ rsvd_conv_data->task = (rsvd_task_data_t *)wmem_map_lookup(rsvd_conv_data->tasks, (const void *)&request_id);
}
sub_tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, len, ett_svhdx_tunnel_scsi_request, &sub_item, "SVHDX_TUNNEL_SCSI_%s", (request ? "REQUEST" : "RESPONSE"));