]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
dwarflint: Plug a leak
authorPetr Machata <pmachata@redhat.com>
Mon, 30 Nov 2009 12:58:15 +0000 (13:58 +0100)
committerPetr Machata <pmachata@redhat.com>
Wed, 18 Aug 2010 12:55:15 +0000 (14:55 +0200)
src/dwarflint/where.c

index 6e3d5d89c42fed5cb7fe20c9add984b2641f192a..3bfe0f606db281c9d4b9d26b35aaa939ba7d4037 100644 (file)
@@ -98,9 +98,12 @@ where_fmt (const struct where *wh, char *ptr)
 
 #define SETUP_ADDR(N)                                                  \
   char *addr##N##s;                                                    \
+  bool free_s##N = false;                                              \
   if (wh->addr##N == (uint64_t)-1)                                     \
     addr##N##s = NULL;                                                 \
-  else if (x_asprintf (&addr##N##s, inf->addr##N##f, wh->addr##N) < 0) \
+  else if (x_asprintf (&addr##N##s, inf->addr##N##f, wh->addr##N) >= 0)        \
+    free_s##N = true;                                                  \
+  else                                                                 \
     addr##N##s = "(fmt error)"
 
   SETUP_ADDR (1);
@@ -137,6 +140,13 @@ where_fmt (const struct where *wh, char *ptr)
   else if (addr1s != NULL)
     ptr = stpcpy (stpcpy (stpcpy (ptr, inf->addr1n), " "), addr1s);
 
+  if (free_s1)
+    free (addr1s);
+  if (free_s2)
+    free (addr2s);
+  if (free_s3)
+    free (addr3s);
+
   if (wh->ref != NULL && !is_reloc)
     {
       ptr = stpcpy (ptr, " (");