diff options
-rw-r--r-- | epan/dissectors/packet-ansi_637.c | 18 | ||||
-rw-r--r-- | epan/dissectors/packet-ansi_a.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-bmc.c | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-cell_broadcast.c | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-dcerpc-netlogon.c | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-lapsat.c | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-opensafety.c | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-rlc-lte.c | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-rohc.c | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-snmp.c | 8 | ||||
-rw-r--r-- | epan/dissectors/packet-xml.c | 3 |
11 files changed, 38 insertions, 19 deletions
diff --git a/epan/dissectors/packet-ansi_637.c b/epan/dissectors/packet-ansi_637.c index 9e7ddff68d..8e102ba511 100644 --- a/epan/dissectors/packet-ansi_637.c +++ b/epan/dissectors/packet-ansi_637.c @@ -572,7 +572,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) saved_offset = offset - 1; i = num_fields * 7; required_octs = (i / 8) + ((i % 8) ? 1 : 0); - buf = (gchar*)ep_alloc(required_octs); + buf = (gchar*)g_malloc(required_octs); for (i=0; i < required_octs; i++) { oct = tvb_get_guint8(tvb, saved_offset); @@ -581,6 +581,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) saved_offset++; } tvb_out = tvb_new_child_real_data(tvb, buf, required_octs, required_octs); + tvb_set_free_cb(tvb_out, g_free); add_new_data_source(g_pinfo, tvb_out, "Characters"); offset = 0; bit = 0; @@ -634,7 +635,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) saved_offset = offset - 1; i = num_fields * 7; required_octs = (i / 8) + ((i % 8) ? 1 : 0); - buf = (gchar*)ep_alloc(required_octs); + buf = (gchar*)g_malloc(required_octs); for (i=0; i < required_octs; i++) { oct = tvb_get_guint8(tvb, saved_offset); @@ -643,6 +644,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) saved_offset++; } tvb_out = tvb_new_child_real_data(tvb, buf, required_octs, required_octs); + tvb_set_free_cb(tvb_out, g_free); add_new_data_source(g_pinfo, tvb_out, "Characters"); offset = 0; bit = 0; @@ -664,7 +666,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) { saved_offset = offset - 1; required_octs = 2*num_fields; - buf = (gchar*)ep_alloc(required_octs); + buf = (gchar*)g_malloc(required_octs); for (i=0; i < required_octs; i++) { oct = tvb_get_guint8(tvb, saved_offset); @@ -673,6 +675,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) saved_offset++; } tvb_out = tvb_new_child_real_data(tvb, buf, required_octs, required_octs); + tvb_set_free_cb(tvb_out, g_free); add_new_data_source(g_pinfo, tvb_out, "Characters"); offset = 0; if (g_pinfo->private_data && (GPOINTER_TO_UINT(g_pinfo->private_data) == TRUE)) { @@ -699,7 +702,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) else if (encoding == 0x07)/* Latin/Hebrew */ { saved_offset = offset - 1; - buf = (gchar*)ep_alloc(num_fields); + buf = (gchar*)g_malloc(num_fields); for (i=0; i < num_fields; i++) { oct = tvb_get_guint8(tvb, saved_offset); @@ -708,6 +711,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) saved_offset++; } tvb_out = tvb_new_child_real_data(tvb, buf, num_fields, num_fields); + tvb_set_free_cb(tvb_out, g_free); add_new_data_source(g_pinfo, tvb_out, "Characters"); offset = 0; required_octs = len - used; @@ -735,7 +739,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) else if (encoding == 0x08) /* ISO 8859-1 (a/k/a ISO Latin 1) */ { saved_offset = offset - 1; - buf = (gchar*)ep_alloc(num_fields); + buf = (gchar*)g_malloc(num_fields); for (i=0; i < num_fields; i++) { oct = tvb_get_guint8(tvb, saved_offset); @@ -744,6 +748,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) saved_offset++; } tvb_out = tvb_new_child_real_data(tvb, buf, num_fields, num_fields); + tvb_set_free_cb(tvb_out, g_free); add_new_data_source(g_pinfo, tvb_out, "Characters"); offset = 0; required_octs = len - used; @@ -785,7 +790,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) saved_offset = offset - 1; i = num_fields * 7; required_octs = (i / 8) + ((i % 8) ? 1 : 0); - buf = (gchar*)ep_alloc(required_octs); + buf = (gchar*)g_malloc(required_octs); for (i=0; i < required_octs; i++) { oct = tvb_get_guint8(tvb, saved_offset); @@ -794,6 +799,7 @@ tele_param_user_data(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset) saved_offset++; } tvb_out = tvb_new_child_real_data(tvb, buf, required_octs, required_octs); + tvb_set_free_cb(tvb_out, g_free); add_new_data_source(g_pinfo, tvb_out, "Characters"); offset = 0; bit = 0; diff --git a/epan/dissectors/packet-ansi_a.c b/epan/dissectors/packet-ansi_a.c index fbc75c8317..35256323b0 100644 --- a/epan/dissectors/packet-ansi_a.c +++ b/epan/dissectors/packet-ansi_a.c @@ -11956,7 +11956,7 @@ dissect_sip_dtap_bsmap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if ((linelen = tvb_find_line_end(tvb, offset, -1, &next_offset, TRUE)) > 0) { if (linelen >= 2) { ansi_a_tvb = tvb_new_composite(); - msg_type = (guint8*)wmem_alloc(wmem_packet_scope(), 1); + msg_type = (guint8*)wmem_alloc(pinfo->pool, 1); msg_type[0] = (guint8)strtoul(tvb_get_ephemeral_string(tvb, offset, 2), NULL, 16); if ((begin = tvb_find_guint8(tvb, offset, linelen, '"')) > 0) { if (tvb_get_guint8(tvb, begin + 1) == '1') { diff --git a/epan/dissectors/packet-bmc.c b/epan/dissectors/packet-bmc.c index ce6fe858d3..e7ff73b6b3 100644 --- a/epan/dissectors/packet-bmc.c +++ b/epan/dissectors/packet-bmc.c @@ -103,7 +103,7 @@ dissect_bmc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) /* Needs bit-reversing. Create a new buffer, copy the message to it and bit-reverse */ len = tvb_length(tvb); - reversing_buffer = (guint8 *)ep_tvb_memdup(tvb, offset, len); + reversing_buffer = (guint8 *)tvb_memdup(tvb, offset, len); p_rev = reversing_buffer; /* Entire message is bit reversed */ for (i=0; i<len; i++, p_rev++) @@ -111,6 +111,7 @@ dissect_bmc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) /* Make this new buffer part of the display and provide a way to dispose of it */ bit_reversed_tvb = tvb_new_child_real_data(tvb, reversing_buffer, len, len); + tvb_set_free_cb(bit_reversed_tvb, g_free); add_new_data_source(pinfo, bit_reversed_tvb, "Bit-reversed Data"); message_type = tvb_get_guint8(bit_reversed_tvb, offset); diff --git a/epan/dissectors/packet-cell_broadcast.c b/epan/dissectors/packet-cell_broadcast.c index bd5736840b..087575ba1c 100644 --- a/epan/dissectors/packet-cell_broadcast.c +++ b/epan/dissectors/packet-cell_broadcast.c @@ -254,7 +254,7 @@ tvbuff_t * dissect_cbs_data(guint8 sms_encoding, tvbuff_t *tvb, proto_tree *tree tvbuff_t * tvb_out = NULL; guint8 out_len; int length = tvb_length(tvb) - offset; - gchar *utf8_text = NULL; + gchar *utf8_text = NULL, *utf8_out; static unsigned char msgbuf[1024]; guint8 * input_string = tvb_get_ephemeral_string(tvb, offset, length); GIConv cd; @@ -268,7 +268,9 @@ tvbuff_t * dissect_cbs_data(guint8 sms_encoding, tvbuff_t *tvb, proto_tree *tree msgbuf); msgbuf[out_len] = '\0'; utf8_text = gsm_sms_chars_to_utf8(msgbuf, out_len); - tvb_out = tvb_new_child_real_data(tvb, utf8_text, out_len, out_len); + utf8_out = g_strdup(utf8_text); + tvb_out = tvb_new_child_real_data(tvb, utf8_out, out_len, out_len); + tvb_set_free_cb(tvb_out, g_free); add_new_data_source(pinfo, tvb_out, "unpacked 7 bit data"); break; diff --git a/epan/dissectors/packet-dcerpc-netlogon.c b/epan/dissectors/packet-dcerpc-netlogon.c index 2a33402978..c0314cbeea 100644 --- a/epan/dissectors/packet-dcerpc-netlogon.c +++ b/epan/dissectors/packet-dcerpc-netlogon.c @@ -7981,10 +7981,11 @@ dissect_packet_data(tvbuff_t *tvb ,tvbuff_t *auth_tvb _U_, } crypt_rc4_init(&rc4state,vars->encryption_key,16); crypt_rc4(&rc4state,(guint8*)©confounder,8); - decrypted = (guint8*)ep_tvb_memdup(tvb, offset,data_len); + decrypted = (guint8*)tvb_memdup(tvb, offset,data_len); crypt_rc4_init(&rc4state,vars->encryption_key,16); crypt_rc4(&rc4state,decrypted,data_len); buf = tvb_new_child_real_data(tvb, decrypted, data_len, data_len); + tvb_set_free_cb(buf, g_free); /* Note: caller does add_new_data_source(...) */ } else { diff --git a/epan/dissectors/packet-lapsat.c b/epan/dissectors/packet-lapsat.c index beda41f7d8..9c07c15a39 100644 --- a/epan/dissectors/packet-lapsat.c +++ b/epan/dissectors/packet-lapsat.c @@ -504,10 +504,10 @@ dissect_lapsat(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if ((plen + hlen) == tvb_length(tvb)) { /* Need to integrate the last nibble */ - guint8 *data = (guint8 *)ep_alloc(plen); - tvb_memcpy(tvb, data, hlen, plen); + guint8 *data = (guint8 *)tvb_memdup(tvb, hlen, plen); data[plen-1] |= tvb_get_guint8(tvb, 2) << 4; payload = tvb_new_child_real_data(tvb, data, plen, plen); + tvb_set_free_cb(payload, g_free); } else { /* Last nibble doesn't need merging */ payload = tvb_new_subset(tvb, hlen, plen, -1); diff --git a/epan/dissectors/packet-opensafety.c b/epan/dissectors/packet-opensafety.c index 1d30839dce..ec11ecde8e 100644 --- a/epan/dissectors/packet-opensafety.c +++ b/epan/dissectors/packet-opensafety.c @@ -45,6 +45,7 @@ #include <epan/prefs.h> #include <epan/etypes.h> #include <epan/emem.h> +#include <epan/wmem/wmem.h> #include <epan/expert.h> #include <epan/reassemble.h> #include <epan/strutil.h> @@ -1802,7 +1803,8 @@ opensafety_package_dissector(const gchar *protocolName, const gchar *sub_diss_ha } reported_len = tvb_reported_length_remaining(given_tvb, 0); - bytes = (guint8 *) ep_tvb_memdup(given_tvb, 0, length); + bytes = (guint8 *) wmem_alloc(pinfo->pool, length); + tvb_memcpy(given_tvb, bytes, 0, length); if ( do_byte_swap == TRUE && global_mbtcp_big_endian == TRUE ) { diff --git a/epan/dissectors/packet-rlc-lte.c b/epan/dissectors/packet-rlc-lte.c index 1cce110b9c..ced995bdac 100644 --- a/epan/dissectors/packet-rlc-lte.c +++ b/epan/dissectors/packet-rlc-lte.c @@ -488,7 +488,7 @@ static tvbuff_t* reassembly_get_reassembled_tvb(rlc_channel_reassembly_info *rea for (n=0; n < reassembly_info->number_of_segments; n++) { combined_length += reassembly_info->segments[n].length; } - combined_data = (guint8 *)ep_alloc(combined_length); + combined_data = (guint8 *)g_malloc(combined_length); /* Copy data into contiguous buffer */ for (n=0; n < reassembly_info->number_of_segments; n++) { @@ -500,6 +500,7 @@ static tvbuff_t* reassembly_get_reassembled_tvb(rlc_channel_reassembly_info *rea /* Create and return tvb with this data */ reassembled_tvb = tvb_new_child_real_data(parent_tvb, combined_data, combined_offset, combined_offset); + tvb_set_free_cb(reassembled_tvb, g_free); add_new_data_source(pinfo, reassembled_tvb, "Reassembled SDU"); return reassembled_tvb; } diff --git a/epan/dissectors/packet-rohc.c b/epan/dissectors/packet-rohc.c index 1c979515ab..353bd2b283 100644 --- a/epan/dissectors/packet-rohc.c +++ b/epan/dissectors/packet-rohc.c @@ -2295,10 +2295,11 @@ start_over: len = tvb_length_remaining(tvb, offset); if (len >= val_len) { len -= val_len; - data = (guint8 *)ep_alloc(len); + data = (guint8 *)g_malloc(len); tvb_memcpy(tvb, data, offset, 1); tvb_memcpy(tvb, &data[1], offset+1+val_len, len-1); next_tvb = tvb_new_child_real_data(tvb, data, len, len); + tvb_set_free_cb(next_tvb, g_free); add_new_data_source(pinfo, next_tvb, "Payload"); } } diff --git a/epan/dissectors/packet-snmp.c b/epan/dissectors/packet-snmp.c index e8ce3b156c..10d8c05b9f 100644 --- a/epan/dissectors/packet-snmp.c +++ b/epan/dissectors/packet-snmp.c @@ -1696,7 +1696,7 @@ snmp_usm_priv_des(snmp_usm_params_t* p _U_, tvbuff_t* encryptedData _U_, gchar c cryptgrm = (guint8*)ep_tvb_memdup(encryptedData,0,-1); - cleartext = (guint8*)ep_alloc(cryptgrm_len); + cleartext = (guint8*)g_malloc(cryptgrm_len); err = gcry_cipher_open(&hd, GCRY_CIPHER_DES, GCRY_CIPHER_MODE_CBC, 0); if (err != GPG_ERR_NO_ERROR) goto on_gcry_error; @@ -1713,10 +1713,12 @@ snmp_usm_priv_des(snmp_usm_params_t* p _U_, tvbuff_t* encryptedData _U_, gchar c gcry_cipher_close(hd); clear_tvb = tvb_new_child_real_data(encryptedData, cleartext, cryptgrm_len, cryptgrm_len); + tvb_set_free_cb(clear_tvb, g_free); return clear_tvb; on_gcry_error: + g_free(cleartext); *error = (const gchar *)gpg_strerror(err); if (hd) gcry_cipher_close(hd); return NULL; @@ -1766,7 +1768,7 @@ snmp_usm_priv_aes_common(snmp_usm_params_t* p, tvbuff_t* encryptedData, gchar co } cryptgrm = (guint8*)ep_tvb_memdup(encryptedData,0,-1); - cleartext = (guint8*)ep_alloc(cryptgrm_len); + cleartext = (guint8*)g_malloc(cryptgrm_len); err = gcry_cipher_open(&hd, algo, GCRY_CIPHER_MODE_CFB, 0); if (err != GPG_ERR_NO_ERROR) goto on_gcry_error; @@ -1783,10 +1785,12 @@ snmp_usm_priv_aes_common(snmp_usm_params_t* p, tvbuff_t* encryptedData, gchar co gcry_cipher_close(hd); clear_tvb = tvb_new_child_real_data(encryptedData, cleartext, cryptgrm_len, cryptgrm_len); + tvb_set_free_cb(clear_tvb, g_free); return clear_tvb; on_gcry_error: + g_free(cleartext); *error = (const gchar *)gpg_strerror(err); if (hd) gcry_cipher_close(hd); return NULL; diff --git a/epan/dissectors/packet-xml.c b/epan/dissectors/packet-xml.c index ded7c3c219..0f94ed4a14 100644 --- a/epan/dissectors/packet-xml.c +++ b/epan/dissectors/packet-xml.c @@ -236,8 +236,9 @@ static gboolean dissect_xml_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree * dissect_xml(tvb, pinfo, tree); return TRUE; } else if (pref_heuristic_unicode) { - const guint8 *data_str = tvb_get_ephemeral_unicode_string(tvb, 0, tvb_length(tvb), ENC_LITTLE_ENDIAN); + const guint8 *data_str = tvb_get_unicode_string(tvb, 0, tvb_length(tvb), ENC_LITTLE_ENDIAN); tvbuff_t *unicode_tvb = tvb_new_child_real_data(tvb, data_str, tvb_length(tvb)/2, tvb_length(tvb)/2); + tvb_set_free_cb(unicode_tvb, g_free); if (tvbparse_peek(tvbparse_init(unicode_tvb, 0, -1, NULL, want_ignore), want_heur)) { add_new_data_source(pinfo, unicode_tvb, "UTF8"); dissect_xml(unicode_tvb, pinfo, tree); |