diff options
author | Tamar Christina <tamar@zhox.com> | 2018-10-03 15:34:56 +0200 |
---|---|---|
committer | Krzysztof Gogolewski <krz.gogolewski@gmail.com> | 2018-10-03 15:40:22 +0200 |
commit | deceb21b7ec64ae60377addc2679692ca500b6ae (patch) | |
tree | 15c97a02cf0eab901bbe510ad027b7ba11757515 /utils/fs | |
parent | a838ae3750d0744001f31f4cedad13acf47bd610 (diff) | |
download | haskell-deceb21b7ec64ae60377addc2679692ca500b6ae.tar.gz |
Drop accidental write-attributes request
Summary:
The new filesystem code accidentally asks for write attributes
permissions when doing read-only access.
I believe this is what's causing the GHC 8.6.1 tarballs to fail
when installed to a privileged location.
I haven't been able to reproduce the issue yet, but this permission
bit is wrong anyway.
Test Plan: I'm still trying to workout how to test that this works,
changing the permissions on the folder doesn't seem to reproduce
the error on a tarball I made from before the change.
Reviewers: bgamari, tdammers
Reviewed By: bgamari
Subscribers: tdammers, monoidal, rwbarton, carter
GHC Trac Issues: #15667
Differential Revision: https://phabricator.haskell.org/D5177
Diffstat (limited to 'utils/fs')
-rw-r--r-- | utils/fs/fs.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/utils/fs/fs.c b/utils/fs/fs.c index 0f8fbe707f..6644705ffe 100644 --- a/utils/fs/fs.c +++ b/utils/fs/fs.c @@ -107,15 +107,13 @@ int FS(swopen) (const wchar_t* filename, int oflag, int shflag, int pmode) /* Construct access mode. */ DWORD dwDesiredAccess = 0; if (HAS_FLAG (oflag, _O_RDONLY)) - dwDesiredAccess |= GENERIC_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | - FILE_WRITE_ATTRIBUTES;; + dwDesiredAccess |= GENERIC_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES; if (HAS_FLAG (oflag, _O_RDWR)) dwDesiredAccess |= GENERIC_WRITE | GENERIC_READ | FILE_READ_DATA | FILE_WRITE_DATA | FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES; if (HAS_FLAG (oflag, _O_WRONLY)) - dwDesiredAccess|= GENERIC_WRITE | FILE_WRITE_DATA | - FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES; + dwDesiredAccess|= GENERIC_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES; /* Construct shared mode. */ DWORD dwShareMode = FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE; |