aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-isakmp.c
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2016-08-22 22:29:21 +0200
committerAnders Broman <a.broman58@gmail.com>2016-08-23 04:12:32 +0000
commit52910f4e3fa7d771a671cd30bd5320d70aee3eec (patch)
treeb788a9362f433a1fb7123d4ae989ef7c7853daad /epan/dissectors/packet-isakmp.c
parentbee0cd776219fc3cd6ac6a932a1d25b944c299a0 (diff)
isakmp: fix type confusion
Caught by ASAN with WIRESHARK_DEBUG_WMEM_OVERRIDE=simple set. Manually inspection of all type casts to decrypt_data_t and ikev2_decrypt_data_t showed no other users that do not check isakmp_version first. Change-Id: If889afff85a20e31222d33cbea8db3a91a77f389 Reviewed-on: https://code.wireshark.org/review/17246 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: MichaƂ Skalski <mskalski13@gmail.com> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-isakmp.c')
-rw-r--r--epan/dissectors/packet-isakmp.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/epan/dissectors/packet-isakmp.c b/epan/dissectors/packet-isakmp.c
index 99266aa7a7..810fe3334a 100644
--- a/epan/dissectors/packet-isakmp.c
+++ b/epan/dissectors/packet-isakmp.c
@@ -3953,10 +3953,6 @@ dissect_key_exch(tvbuff_t *tvb, int offset, int length, proto_tree *tree, int is
#endif
)
{
-#ifdef HAVE_LIBGCRYPT
- decrypt_data_t *decr = (decrypt_data_t *)decr_data;
-#endif /* HAVE_LIBGCRYPT */
-
if (isakmp_version == 2) {
proto_tree_add_item(tree, hf_isakmp_key_exch_dh_group, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 4;
@@ -3966,14 +3962,18 @@ dissect_key_exch(tvbuff_t *tvb, int offset, int length, proto_tree *tree, int is
proto_tree_add_item(tree, hf_isakmp_key_exch_data, tvb, offset, length, ENC_NA);
#ifdef HAVE_LIBGCRYPT
- if (decr && decr->gi_len == 0 && addresses_equal(&decr->initiator, &pinfo->src)) {
- decr->gi = (gchar *)g_malloc(length);
- tvb_memcpy(tvb, decr->gi, offset, length);
- decr->gi_len = length;
- } else if (decr && decr->gr_len == 0 && !addresses_equal(&decr->initiator, &pinfo->src)) {
- decr->gr = (gchar *)g_malloc(length);
- tvb_memcpy(tvb, decr->gr, offset, length);
- decr->gr_len = length;
+ if (isakmp_version == 1 && decr_data) {
+ decrypt_data_t *decr = (decrypt_data_t *)decr_data;
+
+ if (decr->gi_len == 0 && addresses_equal(&decr->initiator, &pinfo->src)) {
+ decr->gi = (gchar *)g_malloc(length);
+ tvb_memcpy(tvb, decr->gi, offset, length);
+ decr->gi_len = length;
+ } else if (decr->gr_len == 0 && !addresses_equal(&decr->initiator, &pinfo->src)) {
+ decr->gr = (gchar *)g_malloc(length);
+ tvb_memcpy(tvb, decr->gr, offset, length);
+ decr->gr_len = length;
+ }
}
#endif /* HAVE_LIBGCRYPT */
}