diff options
author | Michael Mann <mmann78@netscape.net> | 2012-12-31 20:12:45 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2012-12-31 20:12:45 +0000 |
commit | 37d19a12023567f65f2049400cd72255b8f2c9d2 (patch) | |
tree | 471eba6ef251bf466712f0a317e150bccc80e0d8 | |
parent | b03e7cec0052bc974b833eaecfc62efc3ff73312 (diff) |
Add heuristic for USB MassStorage dissector to be dissected by USB. Bug 8131 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8131)
svn path=/trunk/; revision=46877
-rw-r--r-- | epan/dissectors/packet-usb-masstorage.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/epan/dissectors/packet-usb-masstorage.c b/epan/dissectors/packet-usb-masstorage.c index 868d408351..a141ca1083 100644 --- a/epan/dissectors/packet-usb-masstorage.c +++ b/epan/dissectors/packet-usb-masstorage.c @@ -361,6 +361,23 @@ dissect_usb_ms_bulk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) } +static gboolean +dissect_usb_ms_bulk_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) +{ + const gchar usbc[] = {0x55, 0x53, 0x42, 0x43}; + const gchar usbs[] = {0x55, 0x53, 0x42, 0x53}; + if (tvb_reported_length(tvb) < 4) + return FALSE; + + if (tvb_memeql(tvb, 0, usbc, sizeof(usbc)) == 0 || + tvb_memeql(tvb, 0, usbs, sizeof(usbs)) == 0) { + dissect_usb_ms_bulk(tvb, pinfo, tree); + return TRUE; + } + + return FALSE; +} + void proto_register_usb_ms(void) { @@ -446,4 +463,6 @@ proto_reg_handoff_usb_ms(void) usb_ms_control_handle = new_create_dissector_handle(dissect_usb_ms_control, proto_usb_ms); dissector_add_uint("usb.control", IF_CLASS_MASS_STORAGE, usb_ms_control_handle); + + heur_dissector_add("usb.bulk", dissect_usb_ms_bulk_heur, proto_usb_ms); } |