aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-usb-com.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2014-03-25 22:51:05 +0100
committerPascal Quantin <pascal.quantin@gmail.com>2014-03-25 22:04:23 +0000
commit38b5efd5cf9884d1274a5e9b6cdaa404c9a1d509 (patch)
treee7ac460506bf0a3cca6a89797f87e61da9f80d0d /epan/dissectors/packet-usb-com.c
parent843054ce963f000c023c0ba8aab6d283f92b351f (diff)
MBIM: fix dissection of control packets when capturing with usbmon
Change-Id: Ie20fcb8d393a85d47ba78f6cb70de77fedda2587 Reviewed-on: https://code.wireshark.org/review/829 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-usb-com.c')
-rw-r--r--epan/dissectors/packet-usb-com.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/epan/dissectors/packet-usb-com.c b/epan/dissectors/packet-usb-com.c
index c5f34ea7e6..b7e1beb837 100644
--- a/epan/dissectors/packet-usb-com.c
+++ b/epan/dissectors/packet-usb-com.c
@@ -464,9 +464,15 @@ dissect_usb_com_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
switch (usb_trans_info->setup.request)
{
case SEND_ENCAPSULATED_COMMAND:
+ if ((usb_conv_info->interfaceSubclass == COM_SUBCLASS_MBIM) &&
+ (usb_trans_info->header_info & USB_HEADER_IS_LINUX)) {
+ offset = call_dissector_only(mbim_control_handle, tvb, pinfo, tree, usb_conv_info);
+ break;
+ }
+ /* FALLTHROUGH */
case GET_ENCAPSULATED_RESPONSE:
- if (!is_request && (usb_conv_info->interfaceSubclass == COM_SUBCLASS_MBIM)) {
- offset = call_dissector_only(mbim_control_handle, tvb, pinfo, tree, NULL);
+ if ((usb_conv_info->interfaceSubclass == COM_SUBCLASS_MBIM) && !is_request) {
+ offset = call_dissector_only(mbim_control_handle, tvb, pinfo, tree, usb_conv_info);
}
break;
case GET_NTB_PARAMETERS: