diff options
author | Tomasz Moń <desowin@gmail.com> | 2019-06-14 17:53:45 +0200 |
---|---|---|
committer | Pascal Quantin <pascal@wireshark.org> | 2019-06-14 20:22:08 +0000 |
commit | 33bc4fede9b99677e4f09b8aed89bc14d33a5da5 (patch) | |
tree | 4c8d618edd07d561806887c6fb870ae829077aee /epan/dissectors/packet-usb.c | |
parent | 74d4fcd9554355c616574185b812f0a00d144e17 (diff) |
USB: Do not assume that request is standard
USBPcap control status packets for non standard request types (eg.
Vendor) were incorrectly treated as the standard request type. This
resulted in confusing Info column description.
Describe status packet of non standard request types as "URB_CONTROL
status". Do not try any extra labelling as the overall idea of
Setup/Data/Status is not too good and will be revised in future USBPcap
versions.
Ping-Bug: 11743
Ping-Bug: 15842
Change-Id: Iade5cb85aa01e65874006eb4c7a242568f07b7c8
Reviewed-on: https://code.wireshark.org/review/33596
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Pascal Quantin <pascal@wireshark.org>
Diffstat (limited to 'epan/dissectors/packet-usb.c')
-rw-r--r-- | epan/dissectors/packet-usb.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/epan/dissectors/packet-usb.c b/epan/dissectors/packet-usb.c index a040b9f997..6611c5339b 100644 --- a/epan/dissectors/packet-usb.c +++ b/epan/dissectors/packet-usb.c @@ -5092,9 +5092,14 @@ dissect_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent, /* Check if this is status stage */ if ((usb_conv_info->usb_trans_info) && (usbpcap_control_stage == USB_CONTROL_STAGE_STATUS)) { - col_add_fstr(pinfo->cinfo, COL_INFO, "%s Status", - val_to_str_ext(usb_conv_info->usb_trans_info->setup.request, - &setup_request_names_vals_ext, "Unknown type %x")); + const gchar *description; + if (USB_TYPE(usb_conv_info->usb_trans_info->setup.requesttype) == RQT_SETUP_TYPE_STANDARD) { + description = val_to_str_ext(usb_conv_info->usb_trans_info->setup.request, + &setup_request_names_vals_ext, "Unknown type %x") ; + } else { + description = "URB_CONTROL"; + } + col_add_fstr(pinfo->cinfo, COL_INFO, "%s status", description); /* There is no data to dissect */ return; } |