Commit 58eeb228 authored by KP Singh's avatar KP Singh Committed by Alexei Starovoitov

libbpf: Fix strncat bounds error in libbpf_prog_type_by_name

On compiling samples with this change, one gets an error:

 error: ‘strncat’ specified bound 118 equals destination size
  [-Werror=stringop-truncation]

    strncat(dst, name + section_names[i].len,
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     sizeof(raw_tp_btf_name) - (dst - raw_tp_btf_name));
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

strncat requires the destination to have enough space for the
terminating null byte.

Fixes: f75a697e ("libbpf: Auto-detect btf_id of BTF-based raw_tracepoint")
Signed-off-by: default avatarKP Singh <kpsingh@google.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20191023154038.24075-1-kpsingh@chromium.org
parent e0e4f8e9
...@@ -4690,7 +4690,7 @@ int libbpf_prog_type_by_name(const char *name, enum bpf_prog_type *prog_type, ...@@ -4690,7 +4690,7 @@ int libbpf_prog_type_by_name(const char *name, enum bpf_prog_type *prog_type,
} }
/* prepend "btf_trace_" prefix per kernel convention */ /* prepend "btf_trace_" prefix per kernel convention */
strncat(dst, name + section_names[i].len, strncat(dst, name + section_names[i].len,
sizeof(raw_tp_btf_name) - (dst - raw_tp_btf_name)); sizeof(raw_tp_btf_name) - sizeof("btf_trace_"));
ret = btf__find_by_name(btf, raw_tp_btf_name); ret = btf__find_by_name(btf, raw_tp_btf_name);
btf__free(btf); btf__free(btf);
if (ret <= 0) { if (ret <= 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment