diff options
author | Peter Wu <peter@lekensteyn.nl> | 2019-08-17 11:26:18 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2019-08-19 04:17:10 +0000 |
commit | b6e42f40d3c7f542a5f4492fa8caaa6786950dd5 (patch) | |
tree | 1c5ec03cb16cfa17ee329fdb0cc612caff3f7314 /epan | |
parent | 9ad4f907e836665e609958b0aa953595faee388d (diff) |
EAP: use new tls_set_appdata_dissector API to set the dissector
Passing the appdata dissector via the data parameter caused crashes due
to type confusion, use an alternative, indirect method instead.
Change-Id: I1de3de4e7daf4504c176a6ad8947037606aa20bb
Depends-On: I4770d03f912dd75f92878dd74ad830ebb7eb1431
Reviewed-on: https://code.wireshark.org/review/34312
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-eap.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/epan/dissectors/packet-eap.c b/epan/dissectors/packet-eap.c index 6251964c5f..66acd31988 100644 --- a/epan/dissectors/packet-eap.c +++ b/epan/dissectors/packet-eap.c @@ -106,6 +106,7 @@ static dissector_table_t eap_expanded_type_dissector_table; static dissector_handle_t eap_handle; static dissector_handle_t tls_handle; +static dissector_handle_t diameter_avps_handle; const value_string eap_code_vals[] = { { EAP_REQUEST, "Request" }, @@ -1194,16 +1195,15 @@ dissect_eap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) } if (next_tvb) { - const char *dissector_name = NULL; switch (eap_type) { case EAP_TYPE_TTLS: - dissector_name = "diameter_avps"; + tls_set_appdata_dissector(tls_handle, pinfo, diameter_avps_handle); break; case EAP_TYPE_PEAP: - dissector_name = "eap"; + tls_set_appdata_dissector(tls_handle, pinfo, eap_handle); break; } - call_dissector_with_data(tls_handle, next_tvb, pinfo, eap_tree, (void *)dissector_name); + call_dissector(tls_handle, next_tvb, pinfo, eap_tree); } } } @@ -1759,7 +1759,7 @@ proto_reg_handoff_eap(void) * Get a handle for the SSL/TLS dissector. */ tls_handle = find_dissector_add_dependency("tls", proto_eap); - find_dissector_add_dependency("diameter_avps", proto_eap); + diameter_avps_handle = find_dissector_add_dependency("diameter_avps", proto_eap); dissector_add_uint("ppp.protocol", PPP_EAP, eap_handle); dissector_add_uint("eapol.type", EAPOL_EAP, eap_handle); |