aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-usb.c
diff options
context:
space:
mode:
authorTomasz Moń <desowin@gmail.com>2019-06-14 17:53:45 +0200
committerPascal Quantin <pascal@wireshark.org>2019-06-14 20:22:08 +0000
commit33bc4fede9b99677e4f09b8aed89bc14d33a5da5 (patch)
tree4c8d618edd07d561806887c6fb870ae829077aee /epan/dissectors/packet-usb.c
parent74d4fcd9554355c616574185b812f0a00d144e17 (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.c11
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;
}