lkml.org 
[lkml]   [2019]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.20 188/352] perf header: Fix unchecked usage of strncpy()
    Date
    4.20-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit 7572588085a13d5db02bf159542189f52fdb507e ]

    The strncpy() function may leave the destination string buffer
    unterminated, better use strlcpy() that we have a __weak fallback
    implementation for systems without it.

    This fixes this warning on an Alpine Linux Edge system with gcc 8.2:

    util/header.c: In function 'perf_event__synthesize_event_update_unit':
    util/header.c:3586:2: error: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
    strncpy(ev->data, evsel->unit, size);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    util/header.c:3579:16: note: length computed here
    size_t size = strlen(evsel->unit);
    ^~~~~~~~~~~~~~~~~~~

    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Fixes: a6e5281780d1 ("perf tools: Add event_update event unit type")
    Link: https://lkml.kernel.org/n/tip-fiikh5nay70bv4zskw2aa858@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/perf/util/header.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
    index 4fd45be95a43..13a2251a37c5 100644
    --- a/tools/perf/util/header.c
    +++ b/tools/perf/util/header.c
    @@ -3544,7 +3544,7 @@ perf_event__synthesize_event_update_unit(struct perf_tool *tool,
    if (ev == NULL)
    return -ENOMEM;

    - strncpy(ev->data, evsel->unit, size);
    + strlcpy(ev->data, evsel->unit, size + 1);
    err = process(tool, (union perf_event *)ev, NULL, NULL);
    free(ev);
    return err;
    --
    2.19.1


    \
     
     \ /
      Last update: 2019-02-11 15:30    [W:2.976 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site