From 634e310f9b0525a6885d12d599b34e857cb6f04f Mon Sep 17 00:00:00 2001 From: Yin Fengwei Date: Wed, 15 May 2019 02:46:33 +0000 Subject: [PATCH] build: fix build issue with latest gcc Fix build issues with gcc 9.1 version Tracked-On: #3121 Signed-off-by: Yin Fengwei --- devicemodel/Makefile | 2 +- devicemodel/core/hugetlb.c | 2 +- devicemodel/core/monitor.c | 3 ++- devicemodel/hw/pci/virtio/virtio_audio.c | 3 ++- devicemodel/hw/pci/virtio/virtio_hyper_dmabuf.c | 3 ++- devicemodel/hw/pci/virtio/virtio_ipu.c | 3 ++- devicemodel/hw/pci/virtio/virtio_rnd.c | 3 ++- hypervisor/arch/x86/guest/instr_emul.c | 2 +- tools/acrn-crashlog/acrnprobe/main.c | 3 ++- tools/acrn-manager/acrn_mngr.c | 3 ++- tools/acrn-manager/acrn_vm_ops.c | 2 +- tools/acrn-manager/acrnctl.c | 2 +- tools/acrn-manager/acrnd.c | 2 +- 13 files changed, 20 insertions(+), 13 deletions(-) diff --git a/devicemodel/Makefile b/devicemodel/Makefile index 00eb02a57..5439f342f 100644 --- a/devicemodel/Makefile +++ b/devicemodel/Makefile @@ -18,7 +18,7 @@ CFLAGS += -m64 CFLAGS += -Wall -ffunction-sections CFLAGS += -Werror CFLAGS += -O2 -D_FORTIFY_SOURCE=2 -CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing +CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing -Wno-address-of-packed-member CFLAGS += -fpie CFLAGS += -I$(BASEDIR)/include diff --git a/devicemodel/core/hugetlb.c b/devicemodel/core/hugetlb.c index 073ade5c5..39d7befaa 100644 --- a/devicemodel/core/hugetlb.c +++ b/devicemodel/core/hugetlb.c @@ -355,7 +355,7 @@ static int create_hugetlb_dirs(int level) } memset(tmp_path, '\0', MAX_PATH_LEN); - strncpy(tmp_path, path, MAX_PATH_LEN); + strncpy(tmp_path, path, MAX_PATH_LEN - 1); if ((tmp_path[len - 1] != '/') && (len < MAX_PATH_LEN - 1)) tmp_path[len] = '/'; diff --git a/devicemodel/core/monitor.c b/devicemodel/core/monitor.c index a69486a06..654e001f5 100644 --- a/devicemodel/core/monitor.c +++ b/devicemodel/core/monitor.c @@ -279,7 +279,8 @@ int set_wakeup_timer(time_t t) req.data.rtc_timer.t = t; strncpy(req.data.rtc_timer.vmname, vmname, - sizeof(req.data.rtc_timer.vmname)); + sizeof(req.data.rtc_timer.vmname) - 1); + req.data.rtc_timer.vmname[sizeof(req.data.rtc_timer.vmname) - 1] = 0; memset(&ack, 0, sizeof(struct mngr_msg)); ret = mngr_send_msg(acrnd_fd, &req, &ack, 2); diff --git a/devicemodel/hw/pci/virtio/virtio_audio.c b/devicemodel/hw/pci/virtio/virtio_audio.c index b03f6647a..0af263890 100644 --- a/devicemodel/hw/pci/virtio/virtio_audio.c +++ b/devicemodel/hw/pci/virtio/virtio_audio.c @@ -120,7 +120,8 @@ virtio_audio_kernel_dev_set(struct vbs_dev_info *kdev, const char *name, uint64_t pio_len) { /* init kdev */ - strncpy(kdev->name, name, VBS_NAME_LEN); + strncpy(kdev->name, name, VBS_NAME_LEN - 1); + kdev->name[VBS_NAME_LEN - 1] = 0; kdev->vmid = vmid; kdev->nvq = nvq; kdev->negotiated_features = feature; diff --git a/devicemodel/hw/pci/virtio/virtio_hyper_dmabuf.c b/devicemodel/hw/pci/virtio/virtio_hyper_dmabuf.c index fd07c7ca9..cf470b3b4 100644 --- a/devicemodel/hw/pci/virtio/virtio_hyper_dmabuf.c +++ b/devicemodel/hw/pci/virtio/virtio_hyper_dmabuf.c @@ -115,7 +115,8 @@ virtio_hyper_dmabuf_k_dev_set(const char *name, int vmid, int nvq, uint64_t pio_len) { /* init kdev */ - strncpy(kdev.name, name, VBS_NAME_LEN); + strncpy(kdev.name, name, VBS_NAME_LEN - 1); + kdev.name[VBS_NAME_LEN - 1] = 0; kdev.vmid = vmid; kdev.nvq = nvq; kdev.negotiated_features = feature; diff --git a/devicemodel/hw/pci/virtio/virtio_ipu.c b/devicemodel/hw/pci/virtio/virtio_ipu.c index 127986cb1..31dfdb980 100644 --- a/devicemodel/hw/pci/virtio/virtio_ipu.c +++ b/devicemodel/hw/pci/virtio/virtio_ipu.c @@ -124,7 +124,8 @@ virtio_ipu_k_dev_set(struct vbs_dev_info *ipu_kdev, uint64_t pio_len) { /* init kdev */ - strncpy(ipu_kdev->name, name, VBS_NAME_LEN); + strncpy(ipu_kdev->name, name, VBS_NAME_LEN - 1); + ipu_kdev->name[VBS_NAME_LEN - 1] = 0; ipu_kdev->vmid = vmid; ipu_kdev->nvq = nvq; ipu_kdev->negotiated_features = feature; diff --git a/devicemodel/hw/pci/virtio/virtio_rnd.c b/devicemodel/hw/pci/virtio/virtio_rnd.c index a564d6c0b..894c2764c 100644 --- a/devicemodel/hw/pci/virtio/virtio_rnd.c +++ b/devicemodel/hw/pci/virtio/virtio_rnd.c @@ -216,7 +216,8 @@ virtio_rnd_kernel_dev_set(struct vbs_dev_info *kdev, const char *name, /* FE driver has set VIRTIO_CONFIG_S_DRIVER_OK */ /* init kdev */ - strncpy(kdev->name, name, VBS_NAME_LEN); + strncpy(kdev->name, name, VBS_NAME_LEN - 1); + kdev->name[VBS_NAME_LEN - 1] = 0; kdev->vmid = vmid; kdev->nvq = nvq; kdev->negotiated_features = feature; diff --git a/hypervisor/arch/x86/guest/instr_emul.c b/hypervisor/arch/x86/guest/instr_emul.c index 4bb49eb2f..51f22cef3 100644 --- a/hypervisor/arch/x86/guest/instr_emul.c +++ b/hypervisor/arch/x86/guest/instr_emul.c @@ -965,7 +965,7 @@ exception_inject: static int32_t emulate_movs(struct acrn_vcpu *vcpu, const struct instr_emul_vie *vie) { uint64_t src_gva, gpa, val = 0UL; - uint64_t rcx, rdi, rsi, rflags; + uint64_t rcx = 0UL, rdi, rsi, rflags; uint32_t err_code; enum cpu_reg_name seg; int32_t error; diff --git a/tools/acrn-crashlog/acrnprobe/main.c b/tools/acrn-crashlog/acrnprobe/main.c index e5aad5c79..c50483a4a 100644 --- a/tools/acrn-crashlog/acrnprobe/main.c +++ b/tools/acrn-crashlog/acrnprobe/main.c @@ -85,7 +85,8 @@ int main(int argc, char *argv[]) NULL)) != -1) { switch (op) { case 'c': - strncpy(cfg, optarg, PATH_MAX); + strncpy(cfg, optarg, PATH_MAX - 1); + cfg[PATH_MAX - 1] = 0; break; case 'h': usage(); diff --git a/tools/acrn-manager/acrn_mngr.c b/tools/acrn-manager/acrn_mngr.c index 4ffe81951..4712993fe 100644 --- a/tools/acrn-manager/acrn_mngr.c +++ b/tools/acrn-manager/acrn_mngr.c @@ -323,7 +323,8 @@ static int create_new_server(const char *name) goto sock_err; } mfd->addr.sun_family = AF_UNIX; - strncpy(mfd->addr.sun_path, path, sizeof(mfd->addr.sun_path)); + strncpy(mfd->addr.sun_path, path, sizeof(mfd->addr.sun_path) - 1); + mfd->addr.sun_path[sizeof(mfd->addr.sun_path) - 1] = 0; ret = bind(mfd->fd, (struct sockaddr *)&mfd->addr, sizeof(mfd->addr)); if (ret < 0) { diff --git a/tools/acrn-manager/acrn_vm_ops.c b/tools/acrn-manager/acrn_vm_ops.c index 47381ba65..2a92f5df7 100644 --- a/tools/acrn-manager/acrn_vm_ops.c +++ b/tools/acrn-manager/acrn_vm_ops.c @@ -212,7 +212,7 @@ static inline int _get_vmname_suffix(const char *src, name[max_len_name - 1] = '\0'; } - strncpy(suffix, p + 1, max_len_suffix); + strncpy(suffix, p + 1, max_len_suffix - 1); if (strncmp(suffix, "sh", strlen("sh"))) return -1; diff --git a/tools/acrn-manager/acrnctl.c b/tools/acrn-manager/acrnctl.c index 80d9aa31c..21ac7d3dc 100644 --- a/tools/acrn-manager/acrnctl.c +++ b/tools/acrn-manager/acrnctl.c @@ -144,7 +144,7 @@ static inline int _get_vmname(const char *src, char *vmname, int max_len_vmname) vmname_p = src + strlen("acrnctl: "); memset(vmname, 0, max_len_vmname); - strncpy(vmname, vmname_p, max_len_vmname); + strncpy(vmname, vmname_p, max_len_vmname - 1); if(vmname[max_len_vmname - 1]) { /* vmname is truncated */ printf("get vmname failed, vmname is truncated\n"); diff --git a/tools/acrn-manager/acrnd.c b/tools/acrn-manager/acrnd.c index 2b83b1060..069a008a4 100644 --- a/tools/acrn-manager/acrnd.c +++ b/tools/acrn-manager/acrnd.c @@ -23,7 +23,7 @@ /* acrnd worker timer */ struct work_arg { - char name[VMNAME_LEN]; + char name[VMNAME_LEN + 1]; }; struct acrnd_work {