aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-isakmp.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-isakmp.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-isakmp.c')
-rw-r--r--epan/dissectors/packet-isakmp.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/epan/dissectors/packet-isakmp.c b/epan/dissectors/packet-isakmp.c
index c04762a9a1..4b2f1001a8 100644
--- a/epan/dissectors/packet-isakmp.c
+++ b/epan/dissectors/packet-isakmp.c
@@ -1914,16 +1914,14 @@ decrypt_payload(tvbuff_t *tvb, packet_info *pinfo, const guint8 *buf, guint buf_
if (gcry_cipher_setkey(decr_ctx, decr->secret, decr->secret_len))
return NULL;
- decrypted_data = (guint8 *)g_malloc(buf_len);
+ decrypted_data = (guint8 *)wmem_alloc(pinfo->pool, buf_len);
if (gcry_cipher_decrypt(decr_ctx, decrypted_data, buf_len, buf, buf_len) != GPG_ERR_NO_ERROR) {
- g_free(decrypted_data);
return NULL;
}
gcry_cipher_close(decr_ctx);
encr_tvb = tvb_new_child_real_data(tvb, decrypted_data, buf_len, buf_len);
- tvb_set_free_cb(encr_tvb, g_free);
/* Add the decrypted data to the data source list. */
add_new_data_source(pinfo, encr_tvb, "Decrypted IKE");
@@ -5044,7 +5042,7 @@ dissect_enc(tvbuff_t *tvb,
/*
* Allocate buffer for decrypted data.
*/
- decr_data = (guchar*)g_malloc(encr_data_len);
+ decr_data = (guchar*)wmem_alloc(pinfo->pool, encr_data_len);
decr_data_len = encr_data_len;
/*
@@ -5056,28 +5054,24 @@ dissect_enc(tvbuff_t *tvb,
} else {
err = gcry_cipher_open(&cipher_hd, key_info->encr_spec->gcry_alg, key_info->encr_spec->gcry_mode, 0);
if (err) {
- g_free(decr_data);
REPORT_DISSECTOR_BUG(wmem_strdup_printf(wmem_packet_scope(),
"IKEv2 decryption error: algorithm %d, mode %d: gcry_cipher_open failed: %s",
key_info->encr_spec->gcry_alg, key_info->encr_spec->gcry_mode, gcry_strerror(err)));
}
err = gcry_cipher_setkey(cipher_hd, key_info->encr_key, key_info->encr_spec->key_len);
if (err) {
- g_free(decr_data);
REPORT_DISSECTOR_BUG(wmem_strdup_printf(wmem_packet_scope(),
"IKEv2 decryption error: algorithm %d, key length %d: gcry_cipher_setkey failed: %s",
key_info->encr_spec->gcry_alg, key_info->encr_spec->key_len, gcry_strerror(err)));
}
err = gcry_cipher_setiv(cipher_hd, iv, iv_len);
if (err) {
- g_free(decr_data);
REPORT_DISSECTOR_BUG(wmem_strdup_printf(wmem_packet_scope(),
"IKEv2 decryption error: algorithm %d, iv length %d: gcry_cipher_setiv failed: %s",
key_info->encr_spec->gcry_alg, iv_len, gcry_strerror(err)));
}
err = gcry_cipher_decrypt(cipher_hd, decr_data, decr_data_len, encr_data, encr_data_len);
if (err) {
- g_free(decr_data);
REPORT_DISSECTOR_BUG(wmem_strdup_printf(wmem_packet_scope(),
"IKEv2 decryption error: algorithm %d: gcry_cipher_decrypt failed: %s",
key_info->encr_spec->gcry_alg, gcry_strerror(err)));
@@ -5086,7 +5080,6 @@ dissect_enc(tvbuff_t *tvb,
}
decr_tvb = tvb_new_child_real_data(tvb, decr_data, decr_data_len, decr_data_len);
- tvb_set_free_cb(decr_tvb, g_free);
add_new_data_source(pinfo, decr_tvb, "Decrypted Data");
item = proto_tree_add_item(tree, hf_isakmp_enc_decrypted_data, decr_tvb, 0, decr_data_len, ENC_NA);
proto_item_append_text(item, " (%d byte%s)", decr_data_len, plurality(decr_data_len, "", "s"));