Messages in this thread | ![/](/images/icornerl.gif) | | From | Quanfa Fu <> | Date | Mon, 9 Jan 2023 12:07:26 +0800 | Subject | Re: [PATCH v2] tracing/eprobe: Replace snprintf with memcpy |
| |
Thanks, I'll check it out. Thanks !!
On Mon, Jan 9, 2023 at 11:52 AM Steven Rostedt <rostedt@goodmis.org> wrote: > > On Mon, 9 Jan 2023 11:32:13 +0800 > Quanfa Fu <quanfafu@gmail.com> wrote: > > > @@ -923,17 +923,17 @@ static int trace_eprobe_parse_filter(struct trace_eprobe *ep, int argc, const ch > > > > p = ep->filter_str; > > for (i = 0; i < argc; i++) { > > - ret = snprintf(p, len, "%s ", argv[i]); > > - if (ret < 0) > > - goto error; > > - if (ret > len) { > > - ret = -E2BIG; > > - goto error; > > - } > > - p += ret; > > - len -= ret; > > + arg_len = strlen(argv[i]); > > + memcpy((void *)p, argv[i], arg_len); > > + > > + if (i == argc - 1) > > + p[arg_len] = '\0'; > > + else > > + p[arg_len] = ' '; > > + > > + p += arg_len + 1; > > + len -= arg_len + 1; > > } > > The above is too complex. I mentioned strncat() but you could still > just keep snprintf() too, which adds the '\0'; > > for (i = 0; i < argc; i++) { > if (i) > ret = snprintf(p, len, " %s", argv[i]); > else > ret = snprintf(p, len, "%s", argv[i]); > p += ret; > len -= ret; > } > > -- Steve > > > - p[-1] = '\0'; > > > > /* > > * Ensure the filter string can be parsed correctly. Note, this
| ![\](/images/icornerr.gif) |