]> wimlib.net Git - wimlib/blobdiff - src/win32_apply.c
win32_apply.c: WRITE_DAC is no longer needed when creating directory
[wimlib] / src / win32_apply.c
index d9bf63c2fd305b93cf932b1bbff9d0dc996f8c83..33c1a5dde166a0b5bf3feb60e60b7ad23b3d872b 100644 (file)
@@ -1631,28 +1631,16 @@ create_directory(const struct wim_dentry *dentry, struct win32_apply_ctx *ctx)
        int ret;
 
        /* DELETE is needed for set_short_name(); GENERIC_READ and GENERIC_WRITE
-        * are needed for adjust_compression_attribute(); WRITE_DAC is needed to
-        * remove the directory's DACL if the directory already existed  */
-       perms = GENERIC_READ | GENERIC_WRITE | WRITE_DAC;
+        * are needed for adjust_compression_attribute().  */
+       perms = GENERIC_READ | GENERIC_WRITE;
        if (!dentry_is_root(dentry))
                perms |= DELETE;
 
        /* FILE_ATTRIBUTE_SYSTEM is needed to ensure that
         * FILE_ATTRIBUTE_ENCRYPTED doesn't get set before we want it to be.  */
-retry:
        status = create_file(&h, perms, NULL, FILE_ATTRIBUTE_SYSTEM,
                             FILE_OPEN_IF, FILE_DIRECTORY_FILE, dentry, ctx);
        if (unlikely(!NT_SUCCESS(status))) {
-               if (status == STATUS_ACCESS_DENIED) {
-                       if (perms & WRITE_DAC) {
-                               perms &= ~WRITE_DAC;
-                               goto retry;
-                       }
-                       if (perms & DELETE) {
-                               perms &= ~DELETE;
-                               goto retry;
-                       }
-               }
                const wchar_t *path = current_path(ctx);
                winnt_error(status, L"Can't create directory \"%ls\"", path);