]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
dump: Fix build with newer gcc stable-4.9 staging-4.9 qemu-xen-4.9.3 qemu-xen-4.9.4
authorEric Blake <eblake@redhat.com>
Tue, 27 Mar 2018 20:21:51 +0000 (15:21 -0500)
committerAnthony PERARD <anthony.perard@citrix.com>
Mon, 9 Jul 2018 11:37:59 +0000 (12:37 +0100)
gcc 8 on rawhide is picky enough to complain:

/home/dummy/qemu/dump.c: In function 'create_header32':
/home/dummy/qemu/dump.c:817:5: error: 'strncpy' output truncated before terminating nul copying 8 bytes from a string of the same length [-Werror=stringop-truncation]
     strncpy(dh->signature, KDUMP_SIGNATURE, strlen(KDUMP_SIGNATURE));
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

But we already have SIG_LEN defined as the right length without needing
to do a strlen(), and memcpy() is better than strncpy() when we know
we do not want a trailing NUL byte.

Signed-off-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
(cherry picked from commit 84c868f6b8f8c1be9d3d65df93cf00b30821401c)

dump.c

diff --git a/dump.c b/dump.c
index f7b80d856b3b1342ed43a510fd744f0507d079a8..ffb0cf893423551835c6a1cdf1cfee619bc558fe 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -725,7 +725,7 @@ static void create_header32(DumpState *s, Error **errp)
     size = sizeof(DiskDumpHeader32);
     dh = g_malloc0(size);
 
-    strncpy(dh->signature, KDUMP_SIGNATURE, strlen(KDUMP_SIGNATURE));
+    memcpy(dh->signature, KDUMP_SIGNATURE, SIG_LEN);
     dh->header_version = cpu_to_dump32(s, 6);
     block_size = s->dump_info.page_size;
     dh->block_size = cpu_to_dump32(s, block_size);
@@ -825,7 +825,7 @@ static void create_header64(DumpState *s, Error **errp)
     size = sizeof(DiskDumpHeader64);
     dh = g_malloc0(size);
 
-    strncpy(dh->signature, KDUMP_SIGNATURE, strlen(KDUMP_SIGNATURE));
+    memcpy(dh->signature, KDUMP_SIGNATURE, SIG_LEN);
     dh->header_version = cpu_to_dump32(s, 6);
     block_size = s->dump_info.page_size;
     dh->block_size = cpu_to_dump32(s, block_size);