diff --git a/daemon/open.c b/daemon/open.c index 39c6742..77068b9 100644 --- a/daemon/open.c +++ b/daemon/open.c @@ -498,7 +498,7 @@ static int handle_open(nfs41_upcall *upcall) if (args->create_opts & FILE_NON_DIRECTORY_FILE) { eprintf("trying to open directory %s as a file\n", state->path.path); - status = ERROR_ACCESS_DENIED; + status = ERROR_DIRECTORY; goto out_free_state; } } else if (info.type == NF4REG) { diff --git a/sys/nfs41_driver.c b/sys/nfs41_driver.c index bea18fd..b707e7c 100644 --- a/sys/nfs41_driver.c +++ b/sys/nfs41_driver.c @@ -3276,6 +3276,7 @@ NTSTATUS map_open_errors( case ERROR_SHARING_VIOLATION: return STATUS_SHARING_VIOLATION; case ERROR_REPARSE: return STATUS_REPARSE; case ERROR_TOO_MANY_LINKS: return STATUS_TOO_MANY_LINKS; + case ERROR_DIRECTORY: return STATUS_FILE_IS_A_DIRECTORY; default: print_error("[ERROR] nfs41_Create: upcall returned %d returning " "STATUS_INSUFFICIENT_RESOURCES\n", status); @@ -3394,7 +3395,7 @@ NTSTATUS nfs41_Create( entry->u.Open.disp = params.Disposition; entry->u.Open.copts = params.CreateOptions; entry->u.Open.srv_open = SrvOpen; - if (isDataAccess(params.DesiredAccess) || isOpen2Create(params.Disposition)) { + if (isDataAccess(params.DesiredAccess) || isOpen2Create(params.Disposition)) entry->u.Open.open_owner_id = InterlockedIncrement(&open_owner_id); // if we are creating a file check if nfsv3attributes were passed in if (params.Disposition != FILE_OPEN && params.Disposition != FILE_OVERWRITE) {