qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PULL 7/7] hw/usb: avoid format truncation warning when


From: Daniel P . Berrangé
Subject: Re: [Qemu-devel] [PULL 7/7] hw/usb: avoid format truncation warning when formatting port name
Date: Mon, 18 Jan 2021 11:35:38 +0000
User-agent: Mutt/1.14.6 (2020-07-11)

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é <berrange@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é <berrange@redhat.com>
> > Message-Id: <20190412121626.19829-5-berrange@redhat.com>
> > 
> > [ kraxel: also s/int/unsigned int/ to tell gcc they can't
> >           go negative. ]
> > 
> > Signed-off-by: Gerd Hoffmann <kraxel@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 :|




reply via email to

[Prev in Thread] Current Thread [Next in Thread]