diff options
-rw-r--r-- | ftparchive/multicompress.cc | 2 | ||||
-rwxr-xr-x | test/integration/test-bug-737130-multicompress-file-modes | 30 |
2 files changed, 31 insertions, 1 deletions
diff --git a/ftparchive/multicompress.cc b/ftparchive/multicompress.cc index 265fb1a80..c1bd6037a 100644 --- a/ftparchive/multicompress.cc +++ b/ftparchive/multicompress.cc @@ -365,7 +365,7 @@ bool MultiCompress::Child(int const &FD) for (Files *I = Outputs; I != 0; I = I->Next) { // Set the correct file modes - fchmod(I->TmpFile.Fd(),Permissions); + chmod(I->TmpFile.Name().c_str(),Permissions); if (rename(I->TmpFile.Name().c_str(),I->Output.c_str()) != 0) _error->Errno("rename",_("Failed to rename %s to %s"), diff --git a/test/integration/test-bug-737130-multicompress-file-modes b/test/integration/test-bug-737130-multicompress-file-modes new file mode 100755 index 000000000..7df6339a2 --- /dev/null +++ b/test/integration/test-bug-737130-multicompress-file-modes @@ -0,0 +1,30 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'i386' + +cat >aptarchive/ftparchive.conf <<EOF +Dir { ArchiveDir "$(pwd)/aptarchive"; CacheDir "$(pwd)/aptarchive"; }; +Default { Translation::Compress ". gzip bzip2 xz"; FileMode 0644; }; +tree "dists/sid" { + Sections "main"; + Architectures "i386"; + LongDescription "false"; +}; +EOF +mkdir -p aptarchive/dists/sid/main/binary-i386 +mkdir -p aptarchive/dists/sid/main/i18n +testsuccess aptftparchive generate aptarchive/ftparchive.conf +i18n=aptarchive/dists/sid/main/i18n +for comp in '' .gz .bz2 .xz; do + msgtest 'Test apt-ftparchive file mode is 644 for' "Translation-en$comp" + FILEMODE="$(stat --format %a "$i18n/Translation-en$comp")" + if [ "$FILEMODE" != '644' ]; then + msgfail "Mode was '$FILEMODE'!" + else + msgpass + fi +done |