usb-audio: ignore usb packages with wrong size

usb packets with no payload (zero length) seem to happen in practice for
whatever reason.  Add a check and skip the packet then, otherwise we'll
trigger an assert.

Reported-by: Leonardo Soares Müller <leozinho29_eu@hotmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20181211072649.20700-1-kraxel@redhat.com
This commit is contained in:
Gerd Hoffmann 2018-12-11 08:26:49 +01:00
parent 95a38c395d
commit a7fde1c170

View File

@ -321,6 +321,9 @@ static int streambuf_put(struct streambuf *buf, USBPacket *p)
if (!free) { if (!free) {
return 0; return 0;
} }
if (p->iov.size != USBAUDIO_PACKET_SIZE) {
return 0;
}
assert(free >= USBAUDIO_PACKET_SIZE); assert(free >= USBAUDIO_PACKET_SIZE);
usb_packet_copy(p, buf->data + (buf->prod % buf->size), usb_packet_copy(p, buf->data + (buf->prod % buf->size),
USBAUDIO_PACKET_SIZE); USBAUDIO_PACKET_SIZE);