[Libguestfs] plug leaks in febootstrap

Jim Meyering jim at meyering.net
Tue Jan 10 16:21:17 UTC 2012


Hi Rich,

I ran coverity against febootstrap's head and it spotted four leaks.
This fixes them.  The first patch plugs three.
The second attempts to make the add_link function do what I'm
guessing it was intended to do.  As is, it was a no-op.

>From 7c2ff55613598a1295e213cef36600ad61da7ed6 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Tue, 10 Jan 2012 16:55:49 +0100
Subject: [PATCH 1/2] helper: plug three small leaks

* helper/ext2initrd.c (read_module_deps): Don't leak filename.
(ext2_make_initrd): Don't leak "outfile".
* helper/utils.c (load_file): Don't leak a file pointer.
---
 helper/ext2initrd.c |    4 +++-
 helper/utils.c      |    3 ++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/helper/ext2initrd.c b/helper/ext2initrd.c
index dedc1e8..8b64e0f 100644
--- a/helper/ext2initrd.c
+++ b/helper/ext2initrd.c
@@ -1,5 +1,5 @@
 /* febootstrap-supermin-helper reimplementation in C.
- * Copyright (C) 2009-2011 Red Hat Inc.
+ * Copyright (C) 2009-2012 Red Hat Inc.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -115,6 +115,7 @@ ext2_make_initrd (const char *modpath, const char *initrd)
   FILE *f = fopen (outfile, "w");
   if (f == NULL)
     error (EXIT_FAILURE, errno, "failed to create modules list (%s)", outfile);
+  free (outfile);
   FILE *pp = popen (cmd, "w");
   if (pp == NULL)
     error (EXIT_FAILURE, errno, "failed to create pipe (%s)", cmd);
@@ -175,6 +176,7 @@ read_module_deps (const char *modpath)

   char *filename = xasprintf ("%s/modules.dep", modpath);
   FILE *fp = fopen (filename, "r");
+  free (filename);
   if (fp == NULL)
     error (EXIT_FAILURE, errno, "open: %s/modules.dep", modpath);

diff --git a/helper/utils.c b/helper/utils.c
index 81b300a..3308c3c 100644
--- a/helper/utils.c
+++ b/helper/utils.c
@@ -1,5 +1,5 @@
 /* febootstrap-supermin-helper reimplementation in C.
- * Copyright (C) 2009-2010 Red Hat Inc.
+ * Copyright (C) 2009-2010, 2012 Red Hat Inc.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -306,6 +306,7 @@ load_file (const char *filename)
       line[len-1] = '\0';
     add_string (&lines, &n_used, &n_alloc, line);
   }
+  fclose (fp);

   add_string (&lines, &n_used, &n_alloc, NULL);
   return lines;
--
1.7.9.rc0.13.gbee72


>From f03d46334bb318fad7a7b71900d6a3c11586b68f Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Tue, 10 Jan 2012 17:04:52 +0100
Subject: [PATCH 2/2] helper: fix no-op add_link function

* helper/ext2cpio.c (add_link): Don't leak just-allocated buffer.
Instead, link it into links_head list.
---
 helper/ext2cpio.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/helper/ext2cpio.c b/helper/ext2cpio.c
index 2e8258f..82cc3b4 100644
--- a/helper/ext2cpio.c
+++ b/helper/ext2cpio.c
@@ -1,5 +1,5 @@
 /* febootstrap-supermin-helper reimplementation in C.
- * Copyright (C) 2009-2010 Red Hat Inc.
+ * Copyright (C) 2009-2010, 2012 Red Hat Inc.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -348,6 +348,8 @@ add_link (ext2_ino_t real_ino)
   p->minor = dev_minor;
   p->major = dev_major;
   p->real_ino = real_ino;
+  p->next = links_head;
+  links_head = p;
 }

 static void
--
1.7.9.rc0.13.gbee72




More information about the Libguestfs mailing list