aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dnp.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2009-10-06 19:15:58 +0000
committerAnders Broman <anders.broman@ericsson.com>2009-10-06 19:15:58 +0000
commitbc9a809b65612063457f882a2d732707879ecb01 (patch)
tree012cd52cad567bcc246d8749709f1b72ebe86356 /epan/dissectors/packet-dnp.c
parent0f4d4344dd770cf06b0c4aaa9f945acc99f314d5 (diff)
From Didier Gautheron:
ep memory can't be used for tvbs defined as data_source. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4054 svn path=/trunk/; revision=30376
Diffstat (limited to 'epan/dissectors/packet-dnp.c')
-rw-r--r--epan/dissectors/packet-dnp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/epan/dissectors/packet-dnp.c b/epan/dissectors/packet-dnp.c
index 230f642be6..1085d84014 100644
--- a/epan/dissectors/packet-dnp.c
+++ b/epan/dissectors/packet-dnp.c
@@ -2468,7 +2468,7 @@ dissect_dnp3_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* XXX - check for dl_len <= 5 */
data_len = dl_len - 5;
- tmp = ep_alloc(data_len);
+ tmp = g_malloc(data_len);
tmp_ptr = tmp;
i = 0;
data_offset = 1; /* skip the transport layer byte when assembling chunks */
@@ -2510,6 +2510,7 @@ dissect_dnp3_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (crc_OK)
{
al_tvb = tvb_new_child_real_data(tvb, tmp, (guint) (tmp_ptr-tmp), (gint) (tmp_ptr-tmp));
+ tvb_set_free_cb(al_tvb, g_free);
/* Check for fragmented packet */
save_fragmented = pinfo->fragmented;
@@ -2586,6 +2587,7 @@ dissect_dnp3_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* CRC error - throw away the data. */
next_tvb = NULL;
+ g_free(tmp);
proto_tree_add_text(dnp3_tree, tvb, 11, -1, "CRC failed, %u chunks", i);
}