From b0369791570d7af4f9996c2cbb29b8e93f761bbe Mon Sep 17 00:00:00 2001 From: Nikos Skalkotos 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') -- 1.7.10.4