[USETUP] Use correct flags for the NtCreateFile call that creates new file directories.
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Wed, 31 May 2017 02:08:16 +0000 (04:08 +0200)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sun, 3 Jun 2018 20:12:46 +0000 (22:12 +0200)
DIRECTORY_ALL_ACCESS is not the correct flag, because it is used with the NtCreateDirectoryObject API
that creates virtual "directories" in the NT object namespace; that's not our purpose here.

svn path=/branches/setup_improvements/; revision=74716

base/setup/usetup/filesup.c

index 6094ba3..e0bd0b1 100644 (file)
@@ -30,7 +30,7 @@ SetupCreateSingleDirectory(
     HANDLE DirectoryHandle;
     NTSTATUS Status;
 
-    if(!RtlCreateUnicodeString(&PathName, DirectoryName))
+    if (!RtlCreateUnicodeString(&PathName, DirectoryName))
         return STATUS_NO_MEMORY;
 
     if (PathName.Length > sizeof(WCHAR) &&
@@ -55,14 +55,14 @@ SetupCreateSingleDirectory(
                                NULL);
 
     Status = NtCreateFile(&DirectoryHandle,
-                          DIRECTORY_ALL_ACCESS,
+                          FILE_LIST_DIRECTORY | SYNCHRONIZE,
                           &ObjectAttributes,
                           &IoStatusBlock,
                           NULL,
                           FILE_ATTRIBUTE_DIRECTORY,
                           FILE_SHARE_READ | FILE_SHARE_WRITE,
                           FILE_OPEN_IF,
-                          FILE_DIRECTORY_FILE,
+                          FILE_OPEN_FOR_BACKUP_INTENT | FILE_DIRECTORY_FILE,
                           NULL,
                           0);
     if (NT_SUCCESS(Status))