diff options
author | David Kalnischkies <david@kalnischkies.de> | 2018-02-02 19:14:09 +0100 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2018-02-19 15:56:09 +0100 |
commit | b3e7a16265e7c6c3b6892b9ec8a787d692ced6e6 (patch) | |
tree | 631acc6779df934c8cac78f4ffa5776ab7d75d2a /apt-pkg/acquire-item.cc | |
parent | 7aaf9b2c63aa8bdd87de4c19dcf1742c686a1cc2 (diff) |
ensure correct file permissions for auxfiles
The interesting takeaway here is perhaps that 'chmod +w' is effected by
the umask – obvious in hindsight of course. The usual setup helps with
hiding that applying that recursively on all directories (and files)
isn't correct. Ensuring files will not be stored with the wrong
permissions even if in strange umask contexts is trivial in comparison.
Fixing the test also highlighted that it wasn't bulletproof as apt will
automatically fix the permissions of the directories it works with, so
for this test we actually need to introduce a shortcut in the code.
Reported-By: Ubuntu autopkgtest CI
Diffstat (limited to 'apt-pkg/acquire-item.cc')
-rw-r--r-- | apt-pkg/acquire-item.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 792465b90..86ffe9e49 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -3622,7 +3622,7 @@ void pkgAcqChangelog::Init(std::string const &DestDir, std::string const &DestFi } TemporaryDirectory = tmpname; - ChangeOwnerAndPermissionOfFile("Item::QueueURI", TemporaryDirectory.c_str(), + ChangeOwnerAndPermissionOfFile("pkgAcqChangelog::Init", TemporaryDirectory.c_str(), SandboxUser.c_str(), ROOT_GROUP, 0700); DestFile = flCombine(TemporaryDirectory, DestFileName); @@ -3635,6 +3635,7 @@ void pkgAcqChangelog::Init(std::string const &DestDir, std::string const &DestFi if (file1.Open(DestFile, FileFd::WriteOnly | FileFd::Create | FileFd::Exclusive) && file2.Open(d->FinalFile, FileFd::ReadOnly) && CopyFile(file2, file1)) { + ChangeOwnerAndPermissionOfFile("pkgAcqChangelog::Init", DestFile.c_str(), "root", ROOT_GROUP, 0644); struct timeval times[2]; times[0].tv_sec = times[1].tv_sec = file2.ModificationTime(); times[0].tv_usec = times[1].tv_usec = 0; @@ -4007,6 +4008,7 @@ static std::string GetAuxFileNameFromURI(std::string const &uri) { FileFd out(filename, FileFd::WriteOnly | FileFd::Create | FileFd::Exclusive); CopyFile(in, out); + ChangeOwnerAndPermissionOfFile("GetAuxFileNameFromURI", filename.c_str(), "root", ROOT_GROUP, 0644); } _error->RevertToStack(); return filename; |