[dpdk-dev] Mem: Fixes small memory leak due to missing free.
Commit Message
A function in cmdline.c has a return that does not free buf properly.
Signed-off-by: eziegenb <eziegenb@brocade.com>
---
lib/librte_cmdline/cmdline.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Comments
On Tue, 19 May 2015 12:54:35 -0700
eziegenb <eziegenb@brocade.com> wrote:
> A function in cmdline.c has a return that does not free buf properly.
>
> Signed-off-by: eziegenb <eziegenb@brocade.com>
> ---
> lib/librte_cmdline/cmdline.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/lib/librte_cmdline/cmdline.c b/lib/librte_cmdline/cmdline.c
> index e61c4f2..747d3bb 100644
> --- a/lib/librte_cmdline/cmdline.c
> +++ b/lib/librte_cmdline/cmdline.c
> @@ -192,8 +192,10 @@ cmdline_printf(const struct cmdline *cl, const char *fmt, ...)
> va_start(ap, fmt);
> ret = vsnprintf(buf, BUFSIZ, fmt, ap);
> va_end(ap);
> - if (ret < 0)
> + if (ret < 0){
> + free(buf);
> return;
> + }
> if (ret >= BUFSIZ)
> ret = BUFSIZ - 1;
> write(cl->s_out, buf, ret);
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Hi,
2015-05-19 12:54, eziegenb:
> A function in cmdline.c has a return that does not free buf properly.
>
> Signed-off-by: eziegenb <eziegenb@brocade.com>
Is it possible to have your real name?
Thanks
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of eziegenb
> Sent: Tuesday, May 19, 2015 8:55 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] Mem: Fixes small memory leak due to missing
> free.
>
> A function in cmdline.c has a return that does not free buf properly.
That didn't turn up in the Coverity scan (perhaps because it is in the #else branch of an #ifdef) but it is a leak.
Acked-by: John McNamara <john.mcnamara@intel.com>
@@ -192,8 +192,10 @@ cmdline_printf(const struct cmdline *cl, const char *fmt, ...)
va_start(ap, fmt);
ret = vsnprintf(buf, BUFSIZ, fmt, ap);
va_end(ap);
- if (ret < 0)
+ if (ret < 0){
+ free(buf);
return;
+ }
if (ret >= BUFSIZ)
ret = BUFSIZ - 1;
write(cl->s_out, buf, ret);