aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2019-08-17 11:26:18 +0100
committerAnders Broman <a.broman58@gmail.com>2019-08-19 04:17:10 +0000
commitb6e42f40d3c7f542a5f4492fa8caaa6786950dd5 (patch)
tree1c5ec03cb16cfa17ee329fdb0cc612caff3f7314 /epan
parent9ad4f907e836665e609958b0aa953595faee388d (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.c10
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);