aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-pdcp-lte.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2016-07-19 22:53:28 -0400
committerEvan Huus <eapache@gmail.com>2016-07-20 22:12:56 +0000
commitbe1398c17ca1d5b203a930d9254125d602830aef (patch)
tree611a6c211931f45a32d65199fa65c4a5a36fec2f /epan/dissectors/packet-pdcp-lte.c
parente07b4aa6670f57be7f613eec9d8d47712d1cfa86 (diff)
Convert uses of g_alloced data with tvb_new_child_real_data to use pinfo->pool instead.
Aldo update documentation to suggest using wmem pinfo->pool instead of glib memory Change-Id: I5d34cc6c1515aa9f0d57784b38da501ffcb95ccc Reviewed-on: https://code.wireshark.org/review/16551 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com> Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Evan Huus <eapache@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-pdcp-lte.c')
-rw-r--r--epan/dissectors/packet-pdcp-lte.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/epan/dissectors/packet-pdcp-lte.c b/epan/dissectors/packet-pdcp-lte.c
index 8a1fd7fe13..b98316aac8 100644
--- a/epan/dissectors/packet-pdcp-lte.c
+++ b/epan/dissectors/packet-pdcp-lte.c
@@ -1540,8 +1540,7 @@ static tvbuff_t *decipher_payload(tvbuff_t *tvb, packet_info *pinfo, int *offset
/* Extract the encrypted data into a buffer */
payload_length = tvb_captured_length_remaining(tvb, *offset);
- decrypted_data = (guint8 *)g_malloc0(payload_length);
- tvb_memcpy(tvb, decrypted_data, *offset, payload_length);
+ decrypted_data = (guint8 *)tvb_memdup(pinfo->pool, tvb, *offset, payload_length);
/* Decrypt the actual data */
gcrypt_err = gcry_cipher_decrypt(cypher_hd,
@@ -1549,7 +1548,6 @@ static tvbuff_t *decipher_payload(tvbuff_t *tvb, packet_info *pinfo, int *offset
NULL, 0);
if (gcrypt_err != 0) {
gcry_cipher_close(cypher_hd);
- g_free(decrypted_data);
return tvb;
}
@@ -1563,8 +1561,7 @@ static tvbuff_t *decipher_payload(tvbuff_t *tvb, packet_info *pinfo, int *offset
if (pdu_security_settings->ciphering == eea1) {
/* Extract the encrypted data into a buffer */
payload_length = tvb_captured_length_remaining(tvb, *offset);
- decrypted_data = (guint8 *)g_malloc0(payload_length+4);
- tvb_memcpy(tvb, decrypted_data, *offset, payload_length);
+ decrypted_data = (guint8 *)tvb_memdup(pinfo->pool, tvb, *offset, payload_length);
/* Do the algorithm */
snow3g_f8(pdu_security_settings->cipherKey,
@@ -1577,7 +1574,6 @@ static tvbuff_t *decipher_payload(tvbuff_t *tvb, packet_info *pinfo, int *offset
/* Create tvb for resulting deciphered sdu */
decrypted_tvb = tvb_new_child_real_data(tvb, decrypted_data, payload_length, payload_length);
- tvb_set_free_cb(decrypted_tvb, g_free);
add_new_data_source(pinfo, decrypted_tvb, "Deciphered Payload");
/* Return deciphered data, i.e. beginning of new tvb */