sal/osl/w32/file_dirvol.cxx | 51 -------------------------------------------- 1 file changed, 51 deletions(-)
New commits: commit 753caf32360c25866b2c1cbe8c5f4d8c8733128f Author: Xisco Fauli <[email protected]> AuthorDate: Thu Feb 19 16:28:41 2026 +0100 Commit: Xisco Fauli <[email protected]> CommitDate: Fri Feb 20 10:46:12 2026 +0100 tdf#170297: Revert "tdf#150118 check file permissions on windows if have no readonly" (26.2 only) This reverts commit 1b5d039d8b5861b5ea21ef00ff521c6e2565105f. Change-Id: I5577b131f4a8328719e93ecb1b485aafb46a0ba5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199764 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> diff --git a/sal/osl/w32/file_dirvol.cxx b/sal/osl/w32/file_dirvol.cxx index d2a87fbaac21..ad92c6f05087 100644 --- a/sal/osl/w32/file_dirvol.cxx +++ b/sal/osl/w32/file_dirvol.cxx @@ -21,7 +21,6 @@ #include <systools/win32/extended_max_path.hxx> #include <systools/win32/uwinapi.h> -#include <aclapi.h> #include "file_url.hxx" #include "filetime.hxx" @@ -1526,56 +1525,6 @@ oslFileError SAL_CALL osl_getFileStatus( // https://learn.microsoft.com/en-us/windows/desktop/FileIO/file-attribute-constants if (pStatus->uAttributes & FILE_ATTRIBUTE_DIRECTORY) pStatus->uAttributes &= ~sal_uInt64(FILE_ATTRIBUTE_READONLY); - - // tdf#150118: if there is no Read Only attribute set, lets check if the user has write access on the file - if ( (pStatus->uAttributes & (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_DIRECTORY)) == 0 ) - { - HANDLE hProcessToken = nullptr; - OpenProcessToken(GetCurrentProcess(), TOKEN_DUPLICATE | TOKEN_QUERY, &hProcessToken); - - HANDLE hImpersonationToken = nullptr; - DuplicateToken(hProcessToken, SecurityImpersonation, &hImpersonationToken); - - PSECURITY_DESCRIPTOR pSD = nullptr; - // https://learn.microsoft.com/en-us/windows/win32/api/aclapi/nf-aclapi-getnamedsecurityinfow - DWORD aResult = GetNamedSecurityInfoW( - o3tl::toW(sFullPath.getStr()), SE_FILE_OBJECT, - OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION, - nullptr, nullptr, nullptr, nullptr, &pSD); - - if (aResult == ERROR_SUCCESS) - { - GENERIC_MAPPING mapping - = { FILE_GENERIC_READ, FILE_GENERIC_WRITE, FILE_GENERIC_EXECUTE, FILE_ALL_ACCESS }; - DWORD grantedAccess = 0; - BOOL accessStatus = TRUE; - - // https://learn.microsoft.com/en-us/windows/win32/api/securitybaseapi/nf-securitybaseapi-accesscheck - BOOL bResult = AccessCheck(pSD, hImpersonationToken, FILE_GENERIC_WRITE, &mapping, - nullptr, nullptr, &grantedAccess, &accessStatus); - - if (bResult) - { - if (!accessStatus) - { - // User does NOT have write access: set Read Only attribute - pStatus->uAttributes |= sal_uInt64(FILE_ATTRIBUTE_READONLY); - } - } - else - { - SAL_WARN("AccessCheck API failed with: ", oslTranslateFileError(GetLastError())); - } - LocalFree(pSD); // free memory - } - else - { - SAL_WARN("GetNamedSecurityInfoW API failed with: ", aResult); - } - CloseHandle(hImpersonationToken); // free memory - CloseHandle(hProcessToken); // free memory - } - pStatus->uValidFields |= osl_FileStatus_Mask_Attributes; pStatus->uFileSize = static_cast<sal_uInt64>(pItemImpl->FindData.nFileSizeLow) + (static_cast<sal_uInt64>(pItemImpl->FindData.nFileSizeHigh) << 32);
