From: Pierre Schweitzer Date: Sun, 26 Feb 2017 14:06:50 +0000 (+0000) Subject: [KERNEL32] X-Git-Tag: ReactOS-0.4.4-CLT2017~165 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=298e2fb71cf21c3400c38dbf30715553df7a188f;hp=84b6e377ec1151589ae5abad80fc5b6fdf0fbf81 [KERNEL32] Fix handling of trailing backslash. Patch by Thomas Faber. ROSTESTS-135 svn path=/trunk/; revision=73925 --- 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);