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: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PULL 7/7] hw/usb: avoid format truncation warning when formatting port name
Date: Mon, 18 Jan 2021 12:40:13 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0

On 1/18/21 12:35 PM, Daniel P. Berrangé wrote:
> 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 ?

Ah sorry, this is my --extra-cflags=-m32 config directory.




reply via email to

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