From d2e216f462c2ccc57cac6c8e683aae2abd719916 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Fri, 8 Nov 2013 12:04:56 -0700 Subject: [PATCH] server: Create directories with the specified security attributes. --- dlls/advapi32/tests/security.c | 5 ++--- server/fd.c | 2 +- server/file.c | 2 ++ 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c index 4de623dfc78..fe31b5cdcd6 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c @@ -3081,9 +3081,8 @@ static void test_CreateDirectoryA(void) bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation); ok(bret, "GetAclInformation failed\n"); - todo_wine ok(acl_size.AceCount == 2, - "GetAclInformation returned unexpected entry count (%d != 2).\n", - acl_size.AceCount); + ok(acl_size.AceCount == 2, "GetAclInformation returned unexpected entry count (%d != 2).\n", + acl_size.AceCount); if (acl_size.AceCount > 0) { bret = pGetAce(pDacl, 0, (VOID **)&ace); diff --git a/server/fd.c b/server/fd.c index 32b2a297721..fa8874c5b1a 100644 --- a/server/fd.c +++ b/server/fd.c @@ -1768,7 +1768,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode, /* create the directory if needed */ if ((options & FILE_DIRECTORY_FILE) && (flags & O_CREAT)) { - if (mkdir( name, 0777 ) == -1) + if (mkdir( name, *mode ) == -1) { if (errno != EEXIST || (flags & O_EXCL)) { diff --git a/server/file.c b/server/file.c index 94d3060785d..cceb8ad5c13 100644 --- a/server/file.c +++ b/server/file.c @@ -218,6 +218,8 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si owner = token_get_user( current->process->token ); mode = sd_to_mode( sd, owner ); } + else if (options & FILE_DIRECTORY_FILE) + mode = (attrs & FILE_ATTRIBUTE_READONLY) ? 0555 : 0777; else mode = (attrs & FILE_ATTRIBUTE_READONLY) ? 0444 : 0666;