Message ID | 20210701120026.709862-1-gushengxian507419@gmail.com |
---|---|
State | New |
Headers | show |
Series | tools: bpftool: close va_list 'ap' by va_end() | expand |
On 7/1/21 2:00 PM, gushengxian wrote: > From: gushengxian <gushengxian@yulong.com> > > va_list 'ap' was opened but not closed by va_end(). It should be > closed by va_end() before return. > > Signed-off-by: gushengxian <gushengxian@yulong.com> nit: 'From:' and 'SoB:' should be in standardized form, I presume in your case this would be: Gu Shengxian <gushengxian@yulong.com> > --- > tools/bpf/bpftool/jit_disasm.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c > index e7e7eee9f172..3c85fd1f00cb 100644 > --- a/tools/bpf/bpftool/jit_disasm.c > +++ b/tools/bpf/bpftool/jit_disasm.c > @@ -45,8 +45,10 @@ static int fprintf_json(void *out, const char *fmt, ...) > char *s; > > va_start(ap, fmt); > - if (vasprintf(&s, fmt, ap) < 0) > + if (vasprintf(&s, fmt, ap) < 0) { > + va_end(ap); > return -1; > + } > va_end(ap); Small nit, please change into something like: va_list ap; char *s; + int err; va_start(ap, fmt); - if (vasprintf(&s, fmt, ap) < 0) - return -1; + err = vasprintf(&s, fmt, ap); va_end(ap); + if (err < 0) + return -1; if (!oper_count) { int i; Fwiw, man page says: "On some systems, va_end contains a closing '}' matching a '{' in va_start, so that both macros must occur in the same function, and in a way that allows this.". Thanks, Daniel
diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c index e7e7eee9f172..3c85fd1f00cb 100644 --- a/tools/bpf/bpftool/jit_disasm.c +++ b/tools/bpf/bpftool/jit_disasm.c @@ -45,8 +45,10 @@ static int fprintf_json(void *out, const char *fmt, ...) char *s; va_start(ap, fmt); - if (vasprintf(&s, fmt, ap) < 0) + if (vasprintf(&s, fmt, ap) < 0) { + va_end(ap); return -1; + } va_end(ap); if (!oper_count) {