From 439621a459d3f94eedd5fe53cc0a91b4d70f643e Mon Sep 17 00:00:00 2001 From: Olga Kornievskaia Date: Fri, 16 Mar 2012 18:44:19 -0400 Subject: [PATCH] [driver] respect READONLY attribute if file is created with READONLY attr then set mode to 444 if file is opened with READONLY attr but askes for WRITE access return an error --- sys/nfs41_driver.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sys/nfs41_driver.c b/sys/nfs41_driver.c index cd9741b..815246d 100644 --- a/sys/nfs41_driver.c +++ b/sys/nfs41_driver.c @@ -3407,6 +3407,13 @@ NTSTATUS nfs41_Create( status = STATUS_OBJECT_NAME_INVALID; goto out; } + + if (params.Disposition == FILE_OPEN && + (params.FileAttributes & FILE_ATTRIBUTE_READONLY) && + (params.DesiredAccess & (FILE_WRITE_DATA | FILE_APPEND_DATA))) { + status = STATUS_ACCESS_DENIED; + goto out; + } #if defined(STORE_MOUNT_SEC_CONTEXT) && defined (USE_MOUNT_SEC_CONTEXT) status = nfs41_UpcallCreate(NFS41_OPEN, &pVNetRootContext->mount_sec_ctx, #else @@ -3441,8 +3448,9 @@ NTSTATUS nfs41_Create( } if (!entry->u.Open.mode) entry->u.Open.mode = 0777; + if (params.FileAttributes & FILE_ATTRIBUTE_READONLY) + entry->u.Open.mode = 0444; } - status = nfs41_UpcallWaitForReply(entry, pVNetRootContext->timeout); #ifndef USE_MOUNT_SEC_CONTEXT SeDeleteClientSecurity(&entry->sec_ctx);