On Tue, Dec 18, 2018 at 3:09 PM Philippe Mathieu-Daudé <phi...@redhat.com> wrote: > > GCC 8 added a -Wstringop-truncation warning: > > The -Wstringop-truncation warning added in GCC 8.0 via r254630 for > bug 81117 is specifically intended to highlight likely unintended > uses of the strncpy function that truncate the terminating NUL > character from the source string. > > This new warning leads to compilation failures: > > CC migration/global_state.o > qemu/migration/global_state.c: In function 'global_state_store_running': > qemu/migration/global_state.c:45:5: error: 'strncpy' specified bound 100 > equals destination size [-Werror=stringop-truncation] > strncpy((char *)global_state.runstate, state, > sizeof(global_state.runstate)); > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > make: *** [qemu/rules.mak:69: migration/global_state.o] Error 1 > > The runstate name doesn't require the strings to be NUL-terminated, > therefore strncpy is the right function to use here. > > We could add a #pragma GCC diagnostic ignored "-Wstringop-truncation" > around, disable the warning globally using -Wno-stringop-truncation, > but since QEMU provides the strpadcpy() which does the same purpose, > simply use it to avoid the annoying warning. > > Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > migration/global_state.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/migration/global_state.c b/migration/global_state.c > index 8e8ab5c51e..c7e7618118 100644 > --- a/migration/global_state.c > +++ b/migration/global_state.c > @@ -42,8 +42,8 @@ int global_state_store(void) > void global_state_store_running(void) > { > const char *state = RunState_str(RUN_STATE_RUNNING); > - strncpy((char *)global_state.runstate, > - state, sizeof(global_state.runstate)); > + strpadcpy((char *)global_state.runstate, > + sizeof(global_state.runstate), state, '\0'); > } > > bool global_state_received(void) > -- > 2.17.2 > > -- Marc-André Lureau -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1803872 Title: gcc 8.2 reports stringop-truncation when building qemu Status in QEMU: New Bug description: QEMU 3.0 block/sheepdog.c: In function 'find_vdi_name': block/sheepdog.c:1239:5: error: 'strncpy' specified bound 256 equals destination size [-Werror=stringop-truncation] strncpy(buf + SD_MAX_VDI_LEN, tag, SD_MAX_VDI_TAG_LEN); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If this is the intended behavior, please suppress the warning. For example: #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wstringop-truncation" strncpy(buf + SD_MAX_VDI_LEN, tag, SD_MAX_VDI_TAG_LEN); #pragma GCC diagnostic pop This also happens on other sources, for example hw/acpi/core.c, so another option is to suppress it globally on CFLAGS (-Wno-stringop- truncation) To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1803872/+subscriptions