From ac306c2ce1f402c239dae7109f0a42d369366c1e Mon Sep 17 00:00:00 2001 From: Gal Hammer Date: Wed, 1 Jan 2020 11:50:54 +0200 Subject: [PATCH] dll: open as directory when file's parent directory should be opened. --- Contributors.asciidoc | 1 + src/dll/fsop.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Contributors.asciidoc b/Contributors.asciidoc index a82fa503..b4054d38 100644 --- a/Contributors.asciidoc +++ b/Contributors.asciidoc @@ -61,6 +61,7 @@ CONTRIBUTOR LIST |Felix Croes |felix at dworkin.nl |Francois Karam (KS2, http://www.ks2.fr) |francois.karam at ks2.fr |Fritz Elfert |fritz-github at fritz-elfert.de +|Gal Hammer (Red Hat, https://www.redhat.com) |ghammer at redhat.com |John Oberschelp |john at oberschelp.net |John Tyner |jtyner at gmail.com |Sam Kelly (DuroSoft Technologies LLC, https://durosoft.com) |sam at durosoft.com diff --git a/src/dll/fsop.c b/src/dll/fsop.c index 149fa794..603e2e75 100644 --- a/src/dll/fsop.c +++ b/src/dll/fsop.c @@ -763,6 +763,7 @@ static NTSTATUS FspFileSystemOpCreate_FileOpenTargetDirectory(FSP_FILE_SYSTEM *F UINT32 GrantedAccess; FSP_FSCTL_TRANSACT_FULL_CONTEXT FullContext; FSP_FSCTL_OPEN_FILE_INFO OpenFileInfo; + UINT32 CreateOptions; UINT32 Information; Result = FspFileSystemOpenTargetDirectoryCheck(FileSystem, Request, Response, &GrantedAccess); @@ -775,8 +776,11 @@ static NTSTATUS FspFileSystemOpCreate_FileOpenTargetDirectory(FSP_FILE_SYSTEM *F OpenFileInfo.NormalizedName = (PVOID)Response->Buffer; OpenFileInfo.NormalizedNameSize = FSP_FSCTL_TRANSACT_RSP_BUFFER_SIZEMAX; FspPathSuffix((PWSTR)Request->Buffer, &Parent, &Suffix, Root); + CreateOptions = Request->Req.Create.CreateOptions; + CreateOptions |= FILE_DIRECTORY_FILE; + CreateOptions &= ~FILE_NON_DIRECTORY_FILE; Result = FileSystem->Interface->Open(FileSystem, - Parent, Request->Req.Create.CreateOptions, GrantedAccess, + Parent, CreateOptions, GrantedAccess, AddrOfFileContext(FullContext), &OpenFileInfo.FileInfo); FspPathCombine((PWSTR)Request->Buffer, Suffix); if (!NT_SUCCESS(Result))