On Mon, Jan 18, 2021 at 12:31:07PM +0100, Philippe Mathieu-Daudé wrote: > Hello, > > On 5/3/19 8:59 AM, Gerd Hoffmann wrote: > > From: Daniel P. Berrangé <berra...@redhat.com> > > > > hw/usb/hcd-xhci.c: In function ‘usb_xhci_realize’: > > hw/usb/hcd-xhci.c:3339:66: warning: ‘%d’ directive output may be truncated > > writing between 1 and 10 bytes into a region of size 5 [-Wformat-trunca\ > > tion=] > > 3339 | snprintf(port->name, sizeof(port->name), "usb2 port > > #%d", i+1); > > | ^~ > > hw/usb/hcd-xhci.c:3339:54: note: directive argument in the range [1, > > 2147483647] > > 3339 | snprintf(port->name, sizeof(port->name), "usb2 port > > #%d", i+1); > > | ^~~~~~~~~~~~~~~ > > > > The xhci code formats the port name into a fixed length > > buffer which is only large enough to hold port numbers > > upto 5 digits in decimal representation. We're never > > going to have a port number that large, so aserting the > > port number is sensible is sufficient to tell GCC the > > formatted string won't be truncated. > > > > Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> > > Message-Id: <20190412121626.19829-5-berra...@redhat.com> > > > > [ kraxel: also s/int/unsigned int/ to tell gcc they can't > > go negative. ] > > > > Signed-off-by: Gerd Hoffmann <kra...@redhat.com> > > --- > > hw/usb/hcd-xhci.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c > > index d8472b4fea7f..2e9a839f2bf9 100644 > > --- a/hw/usb/hcd-xhci.c > > +++ b/hw/usb/hcd-xhci.c > > @@ -3306,7 +3306,7 @@ static void usb_xhci_init(XHCIState *xhci) > > { > > DeviceState *dev = DEVICE(xhci); > > XHCIPort *port; > > - int i, usbports, speedmask; > > + unsigned int i, usbports, speedmask; > > > > xhci->usbsts = USBSTS_HCH; > > > > @@ -3336,6 +3336,7 @@ static void usb_xhci_init(XHCIState *xhci) > > USB_SPEED_MASK_LOW | > > USB_SPEED_MASK_FULL | > > USB_SPEED_MASK_HIGH; > > + assert(i < MAXPORTS); > > snprintf(port->name, sizeof(port->name), "usb2 port #%d", i+1); > > speedmask |= port->speedmask; > > } > > @@ -3349,6 +3350,7 @@ static void usb_xhci_init(XHCIState *xhci) > > } > > port->uport = &xhci->uports[i]; > > port->speedmask = USB_SPEED_MASK_SUPER; > > + assert(i < MAXPORTS); > > snprintf(port->name, sizeof(port->name), "usb3 port #%d", i+1); > > speedmask |= port->speedmask; > > } > > > > I am confused, I upgraded Fedora 32 -> 33 and am now getting this > error back, the assertion being apparently ignored:
I'm not seeing this on F33 myself, but our CI is still F32. We should upgrade that. What are your configure args ? Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|