Drop accidental write-attributes request
authorTamar Christina <tamar@zhox.com>
Wed, 3 Oct 2018 13:34:56 +0000 (15:34 +0200)
committerBen Gamari <ben@smart-cactus.org>
Fri, 5 Oct 2018 22:48:18 +0000 (18:48 -0400)
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

(cherry picked from commit deceb21b7ec64ae60377addc2679692ca500b6ae)

utils/fs/fs.c

index 0f8fbe7..6644705 100644 (file)
@@ -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;