Messages in this thread | | | From | Ian Rogers <> | Date | Wed, 8 May 2024 22:34:33 -0700 | Subject | Re: [PATCH v1] libsubcmd: Fix parse-options memory leak |
| |
On Wed, May 8, 2024 at 10:20 PM Ian Rogers <irogers@google.com> wrote: > > If a usage string is built in parse_options_subcommand, also free it. > > Signed-off-by: Ian Rogers <irogers@google.com>
Sorry, belated: Fixes: 901421a5bdf6 ("perf tools: Remove subcmd dependencies on strbuf")
Thanks, Ian
> --- > tools/lib/subcmd/parse-options.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/tools/lib/subcmd/parse-options.c b/tools/lib/subcmd/parse-options.c > index 9fa75943f2ed..d943d78b787e 100644 > --- a/tools/lib/subcmd/parse-options.c > +++ b/tools/lib/subcmd/parse-options.c > @@ -633,11 +633,10 @@ int parse_options_subcommand(int argc, const char **argv, const struct option *o > const char *const subcommands[], const char *usagestr[], int flags) > { > struct parse_opt_ctx_t ctx; > + char *buf = NULL; > > /* build usage string if it's not provided */ > if (subcommands && !usagestr[0]) { > - char *buf = NULL; > - > astrcatf(&buf, "%s %s [<options>] {", subcmd_config.exec_name, argv[0]); > > for (int i = 0; subcommands[i]; i++) { > @@ -679,7 +678,10 @@ int parse_options_subcommand(int argc, const char **argv, const struct option *o > astrcatf(&error_buf, "unknown switch `%c'", *ctx.opt); > usage_with_options(usagestr, options); > } > - > + if (buf) { > + usagestr[0] = NULL; > + free(buf); > + } > return parse_options_end(&ctx); > } > > -- > 2.45.0.rc1.225.g2a3ae87e7f-goog >
| |