summaryrefslogtreecommitdiff
path: root/apt-inst/dirstream.cc
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2011-06-28 22:41:29 +0100
committerMichael Vogt <michael.vogt@ubuntu.com>2011-06-28 22:41:29 +0100
commit72bc4387bb8324c0b359d4acff144f32ebf13683 (patch)
tree893ce4ae33bee4bb53f13bc733c4068e18347561 /apt-inst/dirstream.cc
parentd97582a768690ea79679e51d26fc241c72825880 (diff)
parente449f717078978396b76a2fdae844196888d0211 (diff)
merged from debian-sid
Diffstat (limited to 'apt-inst/dirstream.cc')
-rw-r--r--apt-inst/dirstream.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/apt-inst/dirstream.cc b/apt-inst/dirstream.cc
index 586bbf739..9b6a56848 100644
--- a/apt-inst/dirstream.cc
+++ b/apt-inst/dirstream.cc
@@ -43,11 +43,17 @@ bool pkgDirStream::DoItem(Item &Itm,int &Fd)
// fchmod deals with umask and fchown sets the ownership
if (fchmod(iFd,Itm.Mode) != 0)
- return _error->Errno("fchmod",_("Failed to write file %s"),
- Itm.Name);
+ {
+ _error->Errno("fchmod",_("Failed to write file %s"), Itm.Name);
+ close(iFd);
+ return false;
+ }
if (fchown(iFd,Itm.UID,Itm.GID) != 0 && errno != EPERM)
- return _error->Errno("fchown",_("Failed to write file %s"),
- Itm.Name);
+ {
+ return _error->Errno("fchown",_("Failed to write file %s"), Itm.Name);
+ close(iFd);
+ return false;
+ }
Fd = iFd;
return true;
}