diff options
Diffstat (limited to 'results/classifier/105/instruction/2054889')
| -rw-r--r-- | results/classifier/105/instruction/2054889 | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/results/classifier/105/instruction/2054889 b/results/classifier/105/instruction/2054889 new file mode 100644 index 00000000..898b7dd9 --- /dev/null +++ b/results/classifier/105/instruction/2054889 @@ -0,0 +1,66 @@ +instruction: 0.889 +device: 0.839 +socket: 0.833 +other: 0.822 +mistranslation: 0.791 +network: 0.776 +semantic: 0.739 +boot: 0.679 +graphic: 0.667 +assembly: 0.659 +vnc: 0.605 +KVM: 0.454 + +pcap streams are text files which insert 0xD in Windows version + +Since Windows text files use CRLFs for all \n, the Windows version of QEMU inserts a CR in the PCAP stream when a LF is encountered when using USB PCAP files. + +Starting at line 275 in hw/usb/bus (https://gitlab.com/qemu-project/qemu/-/blob/master/hw/usb/bus.c?ref_type=heads#L275), the file is opened as text instead of binary. + +I think the following patch would fix the issue: + if (dev->pcap_filename) { +- int fd = qemu_open_old(dev->pcap_filename, O_CREAT | O_WRONLY | O_TRUNC, 0666); ++ int fd = qemu_open_old(dev->pcap_filename, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, 0666); + if (fd < 0) { + error_setg(errp, "open %s failed", dev->pcap_filename); + usb_qdev_unrealize(qdev); + return; + } +- dev->pcap = fdopen(fd, "w"); ++ dev->pcap = fdopen(fd, "wb"); + usb_pcap_init(dev->pcap); + } + +To show an example, when using a very common protocol to USB disks, the BBB protocol uses a 10-byte command packet. For example, the READ_CAPACITY(10) command (implemented at https://gitlab.com/qemu-project/qemu/-/blob/master/hw/scsi/scsi-disk.c#L2068) will have a command block length of 10 (0xA). When this 10-byte command (part of the 31-byte CBW) is placed into the PCAP file, the Windows file manager inserts a 0xD before the 0xA, turning the 31-byte CBW into a 32-byte CBW. + +Actual CBW: + 0040 55 53 42 43 01 00 00 00 08 00 00 00 80 00 0a 25 USBC............ + 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 %.............. + +PCAP CBW + 0040 55 53 42 43 01 00 00 00 08 00 00 00 80 00 0d 0a USBC............ + 0050 25 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 %.............. + +I believe simply opening the PCAP file as BINARY instead of TEXT will fix this issue. + +Thank you. + +Hi Benjamin, + +QEMU bug tracker is on GitLab: +https://gitlab.com/qemu-project/qemu/-/issues + +But instead of re-opening the issue there, since you +already figured the problem, do you mind directly post +your patch? See guidelines there: +https://www.qemu.org/docs/master/devel/submitting-a-patch.html + +Thanks! + +Phil. + +I have sent a patch as directed. I hope it is correctly done. + +Thank you. +Ben + |