Message ID | ff51c73e3095fa503d14aafece54f8565fe99900.1556666645.git.alistair.francis@wdc.com |
---|---|
State | New |
Headers | show |
Series | Fix some GCC 9 build warnings | expand |
Le 01/05/2019 à 01:28, Alistair Francis a écrit : > Fix this build warning with GCC 9 on Fedora 30: > hw/usb/hcd-xhci.c:3339:66: error: ‘%d’ directive output may be truncated writing between 1 and 10 bytes into a region of size 5 [-Werror=format-truncation=] > 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); > | ^~~~~~~~~~~~~~~ > In file included from /usr/include/stdio.h:867, > from /home/alistair/qemu/include/qemu/osdep.h:99, > from hw/usb/hcd-xhci.c:21: > /usr/include/bits/stdio2.h:67:10: note: ‘__builtin___snprintf_chk’ output between 13 and 22 bytes into a destination of size 16 > 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 68 | __bos (__s), __fmt, __va_arg_pack ()); > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Signed-off-by: Alistair Francis <alistair.francis@wdc.com> > --- > hw/usb/hcd-xhci.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c > index ec28bee319..2b061772b2 100644 > --- a/hw/usb/hcd-xhci.c > +++ b/hw/usb/hcd-xhci.c > @@ -3322,6 +3322,7 @@ static void usb_xhci_init(XHCIState *xhci) > usb_bus_new(&xhci->bus, sizeof(xhci->bus), &xhci_bus_ops, dev); > > for (i = 0; i < usbports; i++) { > + g_assert(i < MAX(MAXPORTS_2, MAXPORTS_3)); > speedmask = 0; > if (i < xhci->numports_2) { > if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) { > Reviewed-by: Laurent Vivier <laurent@vivier.eu>
On Tue, Apr 30, 2019 at 11:28:31PM +0000, Alistair Francis wrote: > Fix this build warning with GCC 9 on Fedora 30: > hw/usb/hcd-xhci.c:3339:66: error: ‘%d’ directive output may be truncated writing between 1 and 10 bytes into a region of size 5 [-Werror=format-truncation=] > 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); > | ^~~~~~~~~~~~~~~ > In file included from /usr/include/stdio.h:867, > from /home/alistair/qemu/include/qemu/osdep.h:99, > from hw/usb/hcd-xhci.c:21: > /usr/include/bits/stdio2.h:67:10: note: ‘__builtin___snprintf_chk’ output between 13 and 22 bytes into a destination of size 16 > 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 68 | __bos (__s), __fmt, __va_arg_pack ()); > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Signed-off-by: Alistair Francis <alistair.francis@wdc.com> > --- > hw/usb/hcd-xhci.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c > index ec28bee319..2b061772b2 100644 > --- a/hw/usb/hcd-xhci.c > +++ b/hw/usb/hcd-xhci.c > @@ -3322,6 +3322,7 @@ static void usb_xhci_init(XHCIState *xhci) > usb_bus_new(&xhci->bus, sizeof(xhci->bus), &xhci_bus_ops, dev); > > for (i = 0; i < usbports; i++) { > + g_assert(i < MAX(MAXPORTS_2, MAXPORTS_3)); > speedmask = 0; > if (i < xhci->numports_2) { > if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) { I proposed a slightly different fix here: https://lists.gnu.org/archive/html/qemu-devel/2019-04/msg02125.html but both have the same effect Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Regards, Daniel
On 4/30/19 4:28 PM, Alistair Francis wrote: > for (i = 0; i < usbports; i++) { > + g_assert(i < MAX(MAXPORTS_2, MAXPORTS_3)); I would hope that it works to move this out of the loop: g_assert(usbports <= MAX(MAXPORTS_2, MAXPORTS_3)); r~
On 5/1/19 4:12 PM, Richard Henderson wrote: > On 4/30/19 4:28 PM, Alistair Francis wrote: >> for (i = 0; i < usbports; i++) { >> + g_assert(i < MAX(MAXPORTS_2, MAXPORTS_3)); > > I would hope that it works to move this out of the loop: > > g_assert(usbports <= MAX(MAXPORTS_2, MAXPORTS_3)); With Richard suggestion: Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
On Wed, May 1, 2019 at 7:12 AM Richard Henderson <richard.henderson@linaro.org> wrote: > > On 4/30/19 4:28 PM, Alistair Francis wrote: > > for (i = 0; i < usbports; i++) { > > + g_assert(i < MAX(MAXPORTS_2, MAXPORTS_3)); > > I would hope that it works to move this out of the loop: > > g_assert(usbports <= MAX(MAXPORTS_2, MAXPORTS_3)); Yes, that also works. I have updated the patch. Alistair > > > r~
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index ec28bee319..2b061772b2 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -3322,6 +3322,7 @@ static void usb_xhci_init(XHCIState *xhci) usb_bus_new(&xhci->bus, sizeof(xhci->bus), &xhci_bus_ops, dev); for (i = 0; i < usbports; i++) { + g_assert(i < MAX(MAXPORTS_2, MAXPORTS_3)); speedmask = 0; if (i < xhci->numports_2) { if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
Fix this build warning with GCC 9 on Fedora 30: hw/usb/hcd-xhci.c:3339:66: error: ‘%d’ directive output may be truncated writing between 1 and 10 bytes into a region of size 5 [-Werror=format-truncation=] 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); | ^~~~~~~~~~~~~~~ In file included from /usr/include/stdio.h:867, from /home/alistair/qemu/include/qemu/osdep.h:99, from hw/usb/hcd-xhci.c:21: /usr/include/bits/stdio2.h:67:10: note: ‘__builtin___snprintf_chk’ output between 13 and 22 bytes into a destination of size 16 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Alistair Francis <alistair.francis@wdc.com> --- hw/usb/hcd-xhci.c | 1 + 1 file changed, 1 insertion(+)