utrace: fix memory leak
authorJunnan Xu <junnanx.xu@gmail.com>
Fri, 17 Jun 2022 07:20:04 +0000 (15:20 +0800)
committerRui Salvaterra <rsalvaterra@gmail.com>
Mon, 27 Jun 2022 09:52:10 +0000 (10:52 +0100)
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>
Reviewed-by: Rui Salvaterra <rsalvaterra@gmail.com>
trace/trace.c

index d895798e762e13af3cf90beee2590a706b302b6b..6fd321f0f339c897f2a11d57f36ddaeb8a6f0daf 100644 (file)
@@ -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;
        }