summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-usb-ccid.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2013-06-13 10:52:34 +0000
committerPascal Quantin <pascal.quantin@gmail.com>2013-06-13 10:52:34 +0000
commit32bec588924411ce68dd2a77e5c80146ea8e9eb0 (patch)
treea92eb390f4a24085493b78aa9f5c3059f9b0b7a7 /epan/dissectors/packet-usb-ccid.c
parente1b7a26463617bc9faaa4c78486c538f92571919 (diff)
downloadwireshark-32bec588924411ce68dd2a77e5c80146ea8e9eb0.tar.gz
From Tyson Key via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8791 :
Improve dissection of GSM SIM payloads in USB CCID packets svn path=/trunk/; revision=49915
Diffstat (limited to 'epan/dissectors/packet-usb-ccid.c')
-rw-r--r--epan/dissectors/packet-usb-ccid.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/epan/dissectors/packet-usb-ccid.c b/epan/dissectors/packet-usb-ccid.c
index bc8de1cc96..f4edcf6aab 100644
--- a/epan/dissectors/packet-usb-ccid.c
+++ b/epan/dissectors/packet-usb-ccid.c
@@ -173,8 +173,9 @@ static gint ett_ccid = -1;
enum {
SUB_DATA = 0,
SUB_ISO7816,
- SUB_GSM_SIM,
+ SUB_GSM_SIM_CMD,
SUB_PN532_ACS_PSEUDO_APDU,
+ SUB_GSM_SIM_RSP,
SUB_MAX
};
@@ -326,6 +327,11 @@ dissect_ccid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
call_dissector(sub_handles[SUB_PN532_ACS_PSEUDO_APDU], next_tvb, pinfo, tree);
}
+ /* Try to dissect responses to GSM SIM packets */
+ if (sub_selected == SUB_GSM_SIM_CMD) {
+ call_dissector(sub_handles[SUB_GSM_SIM_RSP], next_tvb, pinfo, tree);
+ }
+
else if (sub_selected == SUB_ISO7816) {
pinfo->p2p_dir = P2P_DIR_RECV;
call_dissector(sub_handles[SUB_ISO7816], next_tvb, pinfo, tree);
@@ -399,7 +405,7 @@ proto_register_ccid(void)
static const enum_val_t sub_enum_vals[] = {
{ "data", "Data", SUB_DATA },
{ "iso7816", "Generic ISO 7816", SUB_ISO7816 },
- { "gsm_sim", "GSM SIM", SUB_GSM_SIM },
+ { "gsm_sim", "GSM SIM", SUB_GSM_SIM_CMD },
{ "pn532", "NXP PN532 with ACS Pseudo-Header", SUB_PN532_ACS_PSEUDO_APDU},
{ NULL, NULL, 0 }
};
@@ -431,8 +437,9 @@ proto_reg_handoff_ccid(void)
sub_handles[SUB_DATA] = find_dissector("data");
sub_handles[SUB_ISO7816] = find_dissector("iso7816");
- sub_handles[SUB_GSM_SIM] = find_dissector("gsm_sim");
+ sub_handles[SUB_GSM_SIM_CMD] = find_dissector("gsm_sim.command");
sub_handles[SUB_PN532_ACS_PSEUDO_APDU] = find_dissector("pn532");
+ sub_handles[SUB_GSM_SIM_RSP] = find_dissector("gsm_sim.response");
}
/*