Module: wine Branch: master Commit: 00bc3d9e48c7eb7119df8b2f43930c354ce6f4fe URL: http://source.winehq.org/git/wine.git/?a=commit;h=00bc3d9e48c7eb7119df8b2f43...
Author: Rob Shearman rob@codeweavers.com Date: Tue Oct 2 15:56:35 2007 +0100
advapi32: Allow GetFileSecurityA/W to work on files that have been opened already with restricted sharing flags.
Only use the minimum required access rights for the information being retrieved.
---
dlls/advapi32/security.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 3d070a3..23e9ad2 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -1819,8 +1819,15 @@ GetFileSecurityW( LPCWSTR lpFileName, { HANDLE hfile; NTSTATUS status; + DWORD access = 0; + + if (RequestedInformation & (OWNER_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION| + DACL_SECURITY_INFORMATION)) + access |= READ_CONTROL; + if (RequestedInformation & SACL_SECURITY_INFORMATION) + access |= ACCESS_SYSTEM_SECURITY;
- hfile = CreateFileW( lpFileName, GENERIC_READ, FILE_SHARE_READ, + hfile = CreateFileW( lpFileName, access, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0 ); if ( hfile == INVALID_HANDLE_VALUE ) return FALSE;