On 12/11/18 8:26 AM, Gerd Hoffmann wrote: > 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...@hotmail.com> > Signed-off-by: Gerd Hoffmann <kra...@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> > --- > hw/usb/dev-audio.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/hw/usb/dev-audio.c b/hw/usb/dev-audio.c > index ee43e4914d..28ac7c5165 100644 > --- a/hw/usb/dev-audio.c > +++ b/hw/usb/dev-audio.c > @@ -321,6 +321,9 @@ static int streambuf_put(struct streambuf *buf, USBPacket > *p) > if (!free) { > return 0; > } > + if (p->iov.size != USBAUDIO_PACKET_SIZE) { > + return 0; > + } > assert(free >= USBAUDIO_PACKET_SIZE); > usb_packet_copy(p, buf->data + (buf->prod % buf->size), > USBAUDIO_PACKET_SIZE); >