From 4a830ca857aa7db695ac4f744e3a7e05025daa12 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 26 Sep 2017 12:36:17 +0000 Subject: [PATCH] [FASTFAT] Terminate the path name at the last slash when a file is opened using the IO_OPEN_TARGET_DIRECTORY option. This fixes some IoCreateFile kernel mode tests. svn path=/trunk/; revision=75975 --- reactos/drivers/filesystems/fastfat/create.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/reactos/drivers/filesystems/fastfat/create.c b/reactos/drivers/filesystems/fastfat/create.c index cd4e6577719..6ec553df3e1 100644 --- a/reactos/drivers/filesystems/fastfat/create.c +++ b/reactos/drivers/filesystems/fastfat/create.c @@ -577,7 +577,7 @@ VfatCreateFile( else { PVFATFCB TargetFcb; - LONG idx, FileNameLen; + LONG idx; vfatAddToStat(DeviceExt, Fat.CreateHits, 1); @@ -586,8 +586,8 @@ VfatCreateFile( { vfatGrabFCB(DeviceExt, ParentFcb); } - Status = vfatGetFCBForFile(DeviceExt, &ParentFcb, &TargetFcb, &PathNameU); + Status = vfatGetFCBForFile(DeviceExt, &ParentFcb, &TargetFcb, &PathNameU); if (NT_SUCCESS(Status)) { vfatReleaseFCB(DeviceExt, TargetFcb); @@ -615,14 +615,14 @@ VfatCreateFile( if (idx > 0 || PathNameU.Buffer[0] == L'\\') { - /* We don't want to include / in the name */ - FileNameLen = PathNameU.Length - ((idx + 1) * sizeof(WCHAR)); + /* Terminate the string at the last backslash */ + PathNameU.Buffer[idx + 1] = UNICODE_NULL; + PathNameU.Length = (idx + 1) * sizeof(WCHAR); + PathNameU.MaximumLength = PathNameU.Length + sizeof(WCHAR); - /* Update FO just to keep file name */ - /* Skip first slash */ - ++idx; - FileObject->FileName.Length = FileNameLen; - RtlMoveMemory(&PathNameU.Buffer[0], &PathNameU.Buffer[idx], FileObject->FileName.Length); + /* Update the file object as well */ + FileObject->FileName.Length = PathNameU.Length; + FileObject->FileName.MaximumLength = PathNameU.MaximumLength; } else {