diff options
author | Peter Wu <peter@lekensteyn.nl> | 2016-08-22 22:29:21 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2016-08-23 04:12:32 +0000 |
commit | 52910f4e3fa7d771a671cd30bd5320d70aee3eec (patch) | |
tree | b788a9362f433a1fb7123d4ae989ef7c7853daad /epan/dissectors | |
parent | bee0cd776219fc3cd6ac6a932a1d25b944c299a0 (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')
-rw-r--r-- | epan/dissectors/packet-isakmp.c | 24 |
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 */ } |