aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-websocket.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2014-12-30 18:07:32 +0100
committerPascal Quantin <pascal.quantin@gmail.com>2014-12-30 17:18:45 +0000
commit935c8bf87b3639f2ad4bd393746e06246e66ad69 (patch)
tree0a854fd50cba5bb050aaa04a1bf1f11b459c59f1 /epan/dissectors/packet-websocket.c
parentf3f736c67f915c7a67176a100fac56d46226cb35 (diff)
Websocket: use pinfo pool and not packet one for the unmasked data tvb
As indicated in README.wmem, pinfo pool must be used for anything that might end up being passed to add_new_data_source Change-Id: I4a6396fc52e6c70c771390f502d58199c38c172a Reviewed-on: https://code.wireshark.org/review/6144 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-websocket.c')
-rw-r--r--epan/dissectors/packet-websocket.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/epan/dissectors/packet-websocket.c b/epan/dissectors/packet-websocket.c
index 0cddce5014..98eaf57378 100644
--- a/epan/dissectors/packet-websocket.c
+++ b/epan/dissectors/packet-websocket.c
@@ -131,7 +131,7 @@ static heur_dissector_list_t heur_subdissector_list;
#define MAX_UNMASKED_LEN (1024 * 256)
static tvbuff_t *
-tvb_unmasked(tvbuff_t *tvb, const guint offset, guint payload_length, const guint8 *masking_key)
+tvb_unmasked(tvbuff_t *tvb, packet_info *pinfo, const guint offset, guint payload_length, const guint8 *masking_key)
{
gchar *data_unmask;
@@ -139,7 +139,7 @@ tvb_unmasked(tvbuff_t *tvb, const guint offset, guint payload_length, const guin
const guint8 *data_mask;
guint unmasked_length = payload_length > MAX_UNMASKED_LEN ? MAX_UNMASKED_LEN : payload_length;
- data_unmask = (gchar *)wmem_alloc(wmem_packet_scope(), unmasked_length);
+ data_unmask = (gchar *)wmem_alloc(pinfo->pool, unmasked_length);
data_mask = tvb_get_ptr(tvb, offset, unmasked_length);
/* Unmasked(XOR) Data... */
for(i=0; i < unmasked_length; i++) {
@@ -163,7 +163,7 @@ dissect_websocket_payload(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, p
ti = proto_tree_add_item(ws_tree, hf_ws_payload, tvb, offset, payload_length, ENC_NA);
pl_tree = proto_item_add_subtree(ti, ett_ws_pl);
if (mask) {
- payload_tvb = tvb_unmasked(tvb, offset, payload_length, masking_key);
+ payload_tvb = tvb_unmasked(tvb, pinfo, offset, payload_length, masking_key);
tvb_set_child_real_data_tvbuff(tvb, payload_tvb);
add_new_data_source(pinfo, payload_tvb, payload_length > tvb_captured_length(payload_tvb) ? "Unmasked Data (truncated)" : "Unmasked Data");
ti = proto_tree_add_item(ws_tree, hf_ws_payload_unmask, payload_tvb, offset, payload_length, ENC_NA);