diff options
author | Guy Harris <gharris@sonic.net> | 2022-08-14 22:45:34 -0700 |
---|---|---|
committer | Guy Harris <gharris@sonic.net> | 2022-08-14 22:45:34 -0700 |
commit | a879397a5890f48654b4e61ebbf1d4e69d1eb19a (patch) | |
tree | c5cabfe83f42cf0b71323a1c19049c614034bc38 /pcap-usb-linux-common.c | |
parent | 23f2c6d1f95054edee87b4431a7cb54d1c48a876 (diff) |
usb-linux: fix calculation of on-the-wire length.
Ignore descriptors with a zero length; the only data that matters when
recalculating the on-the-wire length are the ones with data, as the goal
is to calculate the length of data that we would have gotten had neither
usbmon nor libpcap truncated the data, and if there's no data to
truncate....
Diffstat (limited to 'pcap-usb-linux-common.c')
-rw-r--r-- | pcap-usb-linux-common.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/pcap-usb-linux-common.c b/pcap-usb-linux-common.c index 6bd044c9..fb4a8c19 100644 --- a/pcap-usb-linux-common.c +++ b/pcap-usb-linux-common.c @@ -81,9 +81,11 @@ fix_linux_usb_mmapped_length(struct pcap_pkthdr *pkth, const u_char *bp) desc++, bytes_left -= sizeof (usb_isodesc)) { u_int desc_end; - desc_end = descs[desc].offset + descs[desc].len; - if (desc_end > pre_truncation_data_len) - pre_truncation_data_len = desc_end; + if (descs[desc].len != 0) { + desc_end = descs[desc].offset + descs[desc].len; + if (desc_end > pre_truncation_data_len) + pre_truncation_data_len = desc_end; + } } /* |