[Pkg-libvirt-commits] [libguestfs] 47/66: tar-in: Fix places where we didn't cancel the receive (FileIn) correctly along error paths (RHBZ#1091803).
Hilko Bengen
bengen at moszumanska.debian.org
Fri May 9 12:56:33 UTC 2014
This is an automated email from the git hooks/post-receive script.
bengen pushed a commit to branch master
in repository libguestfs.
commit d3ab21a67827608e7bd2ce63b22c59c5a8b837ee
Author: Richard W.M. Jones <rjones at redhat.com>
Date: Mon Apr 28 09:51:00 2014 +0100
tar-in: Fix places where we didn't cancel the receive (FileIn) correctly along error paths (RHBZ#1091803).
Thanks: Bo Fan.
(cherry picked from commit efd159a063410b3d9d13814222abed231ec42f90)
---
daemon/tar.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/daemon/tar.c b/daemon/tar.c
index 548eb89..6723f3a 100644
--- a/daemon/tar.c
+++ b/daemon/tar.c
@@ -47,11 +47,14 @@ is_chown_supported (const char *dir)
{
size_t len = sysroot_len + strlen (dir) + 64;
char buf[len];
- int fd, r, saved_errno;
+ int fd, r, err, saved_errno;
/* Create a randomly named file. */
snprintf (buf, len, "%s%s/XXXXXXXX.XXX", sysroot, dir);
if (random_name (buf) == -1) {
+ err = errno;
+ r = cancel_receive ();
+ errno = err;
reply_with_perror ("random_name");
return -1;
}
@@ -59,6 +62,9 @@ is_chown_supported (const char *dir)
/* Maybe 'dir' is not a directory or filesystem not writable? */
fd = open (buf, O_WRONLY|O_CREAT|O_NOCTTY|O_CLOEXEC, 0666);
if (fd == -1) {
+ err = errno;
+ r = cancel_receive ();
+ errno = err;
reply_with_perror ("%s", dir);
return -1;
}
@@ -78,6 +84,9 @@ is_chown_supported (const char *dir)
if (r == -1) {
/* Some other error? */
+ err = errno;
+ r = cancel_receive ();
+ errno = err;
reply_with_perror_errno (saved_errno, "unexpected error in fchown");
return -1;
}
@@ -153,6 +162,9 @@ do_tar_in (const char *dir, const char *compress)
fd = mkstemp (error_file);
if (fd == -1) {
+ err = errno;
+ r = cancel_receive ();
+ errno = err;
reply_with_perror ("mkstemp");
return -1;
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-libvirt/libguestfs.git
More information about the Pkg-libvirt-commits
mailing list