From 298e2fb71cf21c3400c38dbf30715553df7a188f Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 26 Feb 2017 14:06:50 +0000 Subject: [PATCH 1/1] [KERNEL32] Fix handling of trailing backslash. Patch by Thomas Faber. ROSTESTS-135 svn path=/trunk/; revision=73925 --- reactos/dll/win32/kernel32/client/file/create.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/reactos/dll/win32/kernel32/client/file/create.c b/reactos/dll/win32/kernel32/client/file/create.c index f823f1f8a14..a633f3795bf 100644 --- a/reactos/dll/win32/kernel32/client/file/create.c +++ b/reactos/dll/win32/kernel32/client/file/create.c @@ -104,6 +104,7 @@ HANDLE WINAPI CreateFileW (LPCWSTR lpFileName, ULONG FileAttributes, Flags = 0; PVOID EaBuffer = NULL; ULONG EaLength = 0; + BOOLEAN TrailingBackslash; if (!lpFileName || !lpFileName[0]) { @@ -220,6 +221,13 @@ HANDLE WINAPI CreateFileW (LPCWSTR lpFileName, } TRACE("NtPathU \'%wZ\'\n", &NtPathU); + + TrailingBackslash = FALSE; + if (NtPathU.Length >= sizeof(WCHAR) && + NtPathU.Buffer[NtPathU.Length / sizeof(WCHAR) - 1]) + { + TrailingBackslash = TRUE; + } if (hTemplateFile != NULL) { @@ -350,6 +358,11 @@ HANDLE WINAPI CreateFileW (LPCWSTR lpFileName, { SetLastError( ERROR_FILE_EXISTS ); } + else if (Status == STATUS_FILE_IS_A_DIRECTORY && + TrailingBackslash) + { + SetLastError(ERROR_PATH_NOT_FOUND); + } else { BaseSetLastNTError (Status); -- 2.17.1