On Mon, 16 Mar 2020 at 18:07, Stefan Hajnoczi <stefa...@redhat.com> wrote:
> gcc (GCC) 9.2.1 20190827 (Red Hat 9.2.1-1) with sanitizers enabled > reports the following error: > > CC x86_64-softmmu/hw/rdma/vmw/pvrdma_dev_ring.o > In file included from /usr/include/string.h:495, > from include/qemu/osdep.h:101, > from hw/rdma/vmw/pvrdma_dev_ring.c:16: > In function ‘strncpy’, > inlined from ‘pvrdma_ring_init’ at hw/rdma/vmw/pvrdma_dev_ring.c:33:5: > /usr/include/bits/string_fortified.h:106:10: error: ‘__builtin_strncpy’ > specified bound 32 equals destination size [-Werror=stringop-truncation] > 106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos > (__dest)); > | > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Use pstrcpy() instead of strncpy(). It is guaranteed to NUL-terminate > strings. > > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > --- > hw/rdma/vmw/pvrdma_dev_ring.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/hw/rdma/vmw/pvrdma_dev_ring.c b/hw/rdma/vmw/pvrdma_dev_ring.c > index d7bc7f5ccc..74b8fa834c 100644 > --- a/hw/rdma/vmw/pvrdma_dev_ring.c > +++ b/hw/rdma/vmw/pvrdma_dev_ring.c > @@ -14,6 +14,7 @@ > */ > > #include "qemu/osdep.h" > +#include "qemu/cutils.h" > #include "hw/pci/pci.h" > #include "cpu.h" > > @@ -30,8 +31,7 @@ int pvrdma_ring_init(PvrdmaRing *ring, const char *name, > PCIDevice *dev, > int i; > int rc = 0; > > - strncpy(ring->name, name, MAX_RING_NAME_SZ); > - ring->name[MAX_RING_NAME_SZ - 1] = 0; > + pstrcpy(ring->name, MAX_RING_NAME_SZ, name); > ring->dev = dev; > ring->ring_state = ring_state; > ring->max_elems = max_elems; > -- > 2.24.1 > > Thanks, Reviewed-by: Yuval Shaia <yuval.shaia.ml.gmail.com>