Message ID | 20240828030321.20688-5-laoar.shao@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Improve the copy of task comm | expand |
Hi, On Wed, Aug 28, 2024 at 11:03:17AM 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@gmail.com> > Reviewed-by: Quentin Monnet <qmo@kernel.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'; ... > 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'; Excuse my ignorance, do we not have a strscpy() equivalent usable in bpf code? > refs->ref_cnt = 1; > refs->has_bpf_cookie = e->has_bpf_cookie; > refs->bpf_cookie = e->bpf_cookie; > -- > 2.43.5 > Thanks Justin
On Fri, Sep 13, 2024 at 5:14 AM Justin Stitt <justinstitt@google.com> wrote: > > Hi, > > On Wed, Aug 28, 2024 at 11:03:17AM 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@gmail.com> > > Reviewed-by: Quentin Monnet <qmo@kernel.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'; > > ... > > > 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'; > > Excuse my ignorance, do we not have a strscpy() equivalent usable in bpf > code? To my knowledge, there is no direct equivalent of the standard strcpy() function available in bpftool or libbpf code.
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'; 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'; refs->ref_cnt = 1; refs->has_bpf_cookie = e->has_bpf_cookie; refs->bpf_cookie = e->bpf_cookie;