From: "Richard W.M. Jones" <rjones(a)redhat.com>
---
src/appliance.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/src/appliance.c b/src/appliance.c
index 5f77a56..57ff38f 100644
--- a/src/appliance.c
+++ b/src/appliance.c
@@ -450,8 +450,10 @@ build_supermin_appliance (guestfs_h *g,
guestfs___print_timestamped_message (g, "run
febootstrap-supermin-helper");
int r = run_supermin_helper (g, supermin_path, tmpcd, len);
- if (r == -1)
+ if (r == -1) {
+ guestfs___remove_tmpdir (tmpcd);
return -1;
+ }
if (g->verbose)
guestfs___print_timestamped_message (g, "finished building supermin
appliance");
@@ -468,6 +470,7 @@ build_supermin_appliance (guestfs_h *g,
int fd = open (filename, O_WRONLY|O_CREAT, 0755);
if (fd == -1) {
perrorf (g, "open: %s", filename);
+ guestfs___remove_tmpdir (tmpcd);
return -1;
}
struct flock fl;
@@ -481,6 +484,7 @@ build_supermin_appliance (guestfs_h *g,
goto again;
perrorf (g, "fcntl: F_SETLKW: %s", filename);
close (fd);
+ guestfs___remove_tmpdir (tmpcd);
return -1;
}
@@ -492,6 +496,7 @@ build_supermin_appliance (guestfs_h *g,
if (ftruncate (fd, clen) == -1) {
perrorf (g, "ftruncate: %s", filename);
close (fd);
+ guestfs___remove_tmpdir (tmpcd);
return -1;
}
@@ -499,11 +504,13 @@ build_supermin_appliance (guestfs_h *g,
if (rr == -1) {
perrorf (g, "write: %s", filename);
close (fd);
+ guestfs___remove_tmpdir (tmpcd);
return -1;
}
if ((size_t) rr != clen) {
error (g, "partial write: %s", filename);
close (fd);
+ guestfs___remove_tmpdir (tmpcd);
return -1;
}
@@ -513,6 +520,7 @@ build_supermin_appliance (guestfs_h *g,
if (rename (filename, filename2) == -1) {
perrorf (g, "rename: %s %s", filename, filename2);
close (fd);
+ guestfs___remove_tmpdir (tmpcd);
return -1;
}
@@ -522,6 +530,7 @@ build_supermin_appliance (guestfs_h *g,
if (rename (filename, filename2) == -1) {
perrorf (g, "rename: %s %s", filename, filename2);
close (fd);
+ guestfs___remove_tmpdir (tmpcd);
return -1;
}
@@ -531,6 +540,7 @@ build_supermin_appliance (guestfs_h *g,
if (rename (filename, filename2) == -1) {
perrorf (g, "rename: %s %s", filename, filename2);
close (fd);
+ guestfs___remove_tmpdir (tmpcd);
return -1;
}
--
1.7.6