From b0369791570d7af4f9996c2cbb29b8e93f761bbe Mon Sep 17 00:00:00 2001
From: Nikos Skalkotos <skalkoto@grnet.gr>
Date: Tue, 25 Jun 2013 18:25:51 +0300
Subject: [PATCH] Always close fds returned by tempfile.mkstemp()

---
 image_creator/bundle_volume.py | 7 +++++--
 image_creator/disk.py          | 9 ++++++---
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/image_creator/bundle_volume.py b/image_creator/bundle_volume.py
index eec084f..215afb2 100644
--- a/image_creator/bundle_volume.py
+++ b/image_creator/bundle_volume.py
@@ -267,8 +267,11 @@ class BundleVolume(object):
         name = os.path.basename(dev) + "_" + uuid.uuid4().hex
         tablefd, table = tempfile.mkstemp()
         try:
-            size = end - start + 1
-            os.write(tablefd, "0 %d linear %s %d" % (size, dev, start))
+            try:
+                size = end - start + 1
+                os.write(tablefd, "0 %d linear %s %d" % (size, dev, start))
+            finally:
+                os.close(tablefd)
             dmsetup('create', "%sp%d" % (name, num), table)
         finally:
             os.unlink(table)
diff --git a/image_creator/disk.py b/image_creator/disk.py
index 76a53aa..5806d6f 100644
--- a/image_creator/disk.py
+++ b/image_creator/disk.py
@@ -174,11 +174,14 @@ class Disk(object):
         snapshot = uuid.uuid4().hex
         tablefd, table = tempfile.mkstemp()
         try:
-            os.write(tablefd, "0 %d snapshot %s %s n 8" %
-                              (int(size), sourcedev, cowdev))
+            try:
+                os.write(tablefd, "0 %d snapshot %s %s n 8" %
+                                  (int(size), sourcedev, cowdev))
+            finally:
+                os.close(tablefd)
+
             dmsetup('create', snapshot, table)
             self._add_cleanup(try_fail_repeat, dmsetup, 'remove', snapshot)
-
         finally:
             os.unlink(table)
         self.out.success('done')
-- 
GitLab