Messages in this thread Patch in this message | | | Date | Wed, 10 Apr 2024 08:09:45 -0700 | Subject | Re: [PATCH] bpf: strnchr not suitable for getting NUL-terminator | From | Yonghong Song <> |
| |
On 4/9/24 5:33 PM, Edward Adam Davis wrote: > The strnchr() is not suitable for obtaining the end of a string with a length > exceeding 1 and ending with a NUL character.
Could you give more detailed explanation with specific examples? I think strnchr() does the right thing here. Note that if fmt is not NULL, strnchrnul() never returns NULL pointer so in the change below, 'if (!fmt_end)' will be always false.
> > Signed-off-by: Edward Adam Davis <eadavis@qq.com> > --- > kernel/bpf/helpers.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c > index 449b9a5d3fe3..07490eba24fe 100644 > --- a/kernel/bpf/helpers.c > +++ b/kernel/bpf/helpers.c > @@ -826,7 +826,7 @@ int bpf_bprintf_prepare(char *fmt, u32 fmt_size, const u64 *raw_args, > u64 cur_arg; > char fmt_ptype, cur_ip[16], ip_spec[] = "%pXX"; > > - fmt_end = strnchr(fmt, fmt_size, 0); > + fmt_end = strnchrnul(fmt, fmt_size, 0); > if (!fmt_end) > return -EINVAL; > fmt_size = fmt_end - fmt;
| |