[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <teajtay63uw2ukcwhna7yfblnjeyrppw4zcx2dfwtdz3tapspn@rntw3luvstci>
Date: Sat, 17 Aug 2024 10:38:58 +0200
From: Alejandro Colomar <alx@...nel.org>
To: Yafang Shao <laoar.shao@...il.com>
Cc: akpm@...ux-foundation.org, torvalds@...ux-foundation.org,
justinstitt@...gle.com, ebiederm@...ssion.com, alexei.starovoitov@...il.com,
rostedt@...dmis.org, catalin.marinas@....com, penguin-kernel@...ove.sakura.ne.jp,
linux-mm@...ck.org, linux-fsdevel@...r.kernel.org,
linux-trace-kernel@...r.kernel.org, audit@...r.kernel.org, linux-security-module@...r.kernel.org,
selinux@...r.kernel.org, bpf@...r.kernel.org, netdev@...r.kernel.org,
dri-devel@...ts.freedesktop.org, Quentin Monnet <qmo@...nel.org>
Subject: Re: [PATCH v7 4/8] bpftool: Ensure task comm is always NUL-terminated
Hi Yafang,
On Sat, Aug 17, 2024 at 10:56:20AM GMT, Yafang Shao wrote:
> Let's explicitly ensure the destination string is NUL-terminated. This way,
> it won't be affected by changes to the source string.
>
> Signed-off-by: Yafang Shao <laoar.shao@...il.com>
> Reviewed-by: Quentin Monnet <qmo@...nel.org>
> ---
> tools/bpf/bpftool/pids.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/tools/bpf/bpftool/pids.c b/tools/bpf/bpftool/pids.c
> index 9b898571b49e..23f488cf1740 100644
> --- a/tools/bpf/bpftool/pids.c
> +++ b/tools/bpf/bpftool/pids.c
> @@ -54,6 +54,7 @@ static void add_ref(struct hashmap *map, struct pid_iter_entry *e)
> ref = &refs->refs[refs->ref_cnt];
> ref->pid = e->pid;
> memcpy(ref->comm, e->comm, sizeof(ref->comm));
> + ref->comm[sizeof(ref->comm) - 1] = '\0';
Why doesn't this use strscpy()? Isn't the source terminated?
Both the source and the destination measure 16 characters. If it is
true that the source is not terminated, then this copy might truncate
the (non-)string by overwriting the last byte with a NUL. Is that
truncation a good thing?
> refs->ref_cnt++;
>
> return;
> @@ -77,6 +78,7 @@ static void add_ref(struct hashmap *map, struct pid_iter_entry *e)
> ref = &refs->refs[0];
> ref->pid = e->pid;
> memcpy(ref->comm, e->comm, sizeof(ref->comm));
> + ref->comm[sizeof(ref->comm) - 1] = '\0';
Same question here.
> refs->ref_cnt = 1;
> refs->has_bpf_cookie = e->has_bpf_cookie;
> refs->bpf_cookie = e->bpf_cookie;
> --
> 2.43.5
>
--
<https://www.alejandro-colomar.es/>
Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)
Powered by blists - more mailing lists