Message ID | 20190724214753.1816451-1-andriin@fb.com |
---|---|
State | Accepted |
Delegated to: | BPF Maintainers |
Headers | show |
Series | [v2,bpf] libbpf: silence GCC8 warning about string truncation | expand |
On Wed, Jul 24, 2019 at 10:46 PM Andrii Nakryiko <andriin@fb.com> wrote: > > Despite a proper NULL-termination after strncpy(..., ..., IFNAMSIZ - 1), > GCC8 still complains about *expected* string truncation: > > xsk.c:330:2: error: 'strncpy' output may be truncated copying 15 bytes > from a string of length 15 [-Werror=stringop-truncation] > strncpy(ifr.ifr_name, xsk->ifname, IFNAMSIZ - 1); > > This patch gets rid of the issue altogether by using memcpy instead. > There is no performance regression, as strncpy will still copy and fill > all of the bytes anyway. > > v1->v2: > - rebase against bpf tree. > > Cc: Magnus Karlsson <magnus.karlsson@intel.com> > Signed-off-by: Andrii Nakryiko <andriin@fb.com> > Acked-by: Magnus Karlsson <magnus.karlsson@intel.com> > Acked-by: Song Liu <songliubraving@fb.com> Applied. Thanks
diff --git a/tools/lib/bpf/xsk.c b/tools/lib/bpf/xsk.c index e02025bbe36d..680e63066cf3 100644 --- a/tools/lib/bpf/xsk.c +++ b/tools/lib/bpf/xsk.c @@ -326,7 +326,7 @@ static int xsk_get_max_queues(struct xsk_socket *xsk) return -errno; ifr.ifr_data = (void *)&channels; - strncpy(ifr.ifr_name, xsk->ifname, IFNAMSIZ - 1); + memcpy(ifr.ifr_name, xsk->ifname, IFNAMSIZ - 1); ifr.ifr_name[IFNAMSIZ - 1] = '\0'; err = ioctl(fd, SIOCETHTOOL, &ifr); if (err && errno != EOPNOTSUPP) { @@ -516,7 +516,7 @@ int xsk_socket__create(struct xsk_socket **xsk_ptr, const char *ifname, err = -errno; goto out_socket; } - strncpy(xsk->ifname, ifname, IFNAMSIZ - 1); + memcpy(xsk->ifname, ifname, IFNAMSIZ - 1); xsk->ifname[IFNAMSIZ - 1] = '\0'; err = xsk_set_xdp_socket_config(&xsk->config, usr_config);