lkml.org 
[lkml]   [2019]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.2 037/162] libbpf: silence GCC8 warning about string truncation
    Date
    [ Upstream commit cb8ffde5694ae5fffb456eae932aac442aa3a207 ]

    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>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/lib/bpf/xsk.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/tools/lib/bpf/xsk.c b/tools/lib/bpf/xsk.c
    index 8e03b65830da0..fa948c5445ecf 100644
    --- a/tools/lib/bpf/xsk.c
    +++ b/tools/lib/bpf/xsk.c
    @@ -336,7 +336,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) {
    @@ -561,7 +561,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);
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-08-27 10:11    [W:6.369 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site