Message ID | 20220617072004.5816-1-junnanx.xu@gmail.com |
---|---|
State | Accepted |
Delegated to: | Rui Salvaterra |
Headers | show |
Series | [v2] utrace: fix memory leak | expand |
Hi, Junnan, On Fri, 17 Jun 2022 at 08:20, <junnanx.xu@gmail.com> wrote: > > From: Junnan Xu <junnanx.xu@gmail.com> > > Fixes following memory leak: > > 14 bytes in 1 blocks are definitely lost in loss record 1 of 5 > at 0x4079514: malloc (vg_replace_malloc.c:309) > by 0x4049A04: vasprintf (vasprintf.c:13) > by 0x4046354: asprintf (asprintf.c:10) > by 0x80491A9: main (in /root/utrace) > > 134 bytes in 1 blocks are definitely lost in loss record 3 of 5 > at 0x4079514: malloc (vg_replace_malloc.c:309) > by 0x4049A04: vasprintf (vasprintf.c:13) > by 0x4046354: asprintf (asprintf.c:10) > by 0x8049208: main (in /root/utrace) > > Signed-off-by: Junnan Xu <junnanx.xu@gmail.com> > --- > trace/trace.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/trace/trace.c b/trace/trace.c > index d895798..6fd321f 100644 > --- a/trace/trace.c > +++ b/trace/trace.c > @@ -381,6 +381,10 @@ int main(int argc, char **argv, char **envp) > ULOG_ERR("failed to exec %s: %m\n", _argv[0]); > > free(_argv); > + if (_envp[0]) > + free(_envp[0]); > + if (newenv == 2 && _envp[1]) > + free(_envp[1]); > free(_envp); > return ret; > } > -- > 2.21.0.windows.1 I'm not a C expert, but I see those array positions being allocated with asprintf(), so they definitely have to be manually deallocated before the array itself. Reviewed-by: Rui Salvaterra <rsalvaterra@gmail.com> I'll merge during the weekend if nobody beats me to it. Cheers, Rui
diff --git a/trace/trace.c b/trace/trace.c index d895798..6fd321f 100644 --- a/trace/trace.c +++ b/trace/trace.c @@ -381,6 +381,10 @@ int main(int argc, char **argv, char **envp) ULOG_ERR("failed to exec %s: %m\n", _argv[0]); free(_argv); + if (_envp[0]) + free(_envp[0]); + if (newenv == 2 && _envp[1]) + free(_envp[1]); free(_envp); return ret; }