From 52d2359910a3e13859e3d23b2484d465f2351f25 Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Tue, 5 Feb 2002 21:32:30 +0000 Subject: [PATCH] Fixed some bugs in vfatMakeAbsoluteFilename/VfatOpenFile with relative filenames. svn path=/trunk/; revision=2606 --- reactos/drivers/fs/vfat/create.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/fs/vfat/create.c b/reactos/drivers/fs/vfat/create.c index aa67ad5540d..4c77e0f6b9e 100644 --- a/reactos/drivers/fs/vfat/create.c +++ b/reactos/drivers/fs/vfat/create.c @@ -1,4 +1,4 @@ -/* $Id: create.c,v 1.36 2002/01/15 21:54:51 hbirr Exp $ +/* $Id: create.c,v 1.37 2002/02/05 21:32:30 hbirr Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -484,7 +484,7 @@ vfatMakeAbsoluteFilename (PFILE_OBJECT pFileObject, /* verify related object is a directory and target name don't start with \. */ if (!(fcb->entry.Attrib & FILE_ATTRIBUTE_DIRECTORY) - || (pRelativeFileName[0] != '\\')) + || (pRelativeFileName[0] == L'\\')) { return STATUS_INVALID_PARAMETER; } @@ -492,9 +492,14 @@ vfatMakeAbsoluteFilename (PFILE_OBJECT pFileObject, /* construct absolute path name */ assert (wcslen (fcb->PathName) + 1 + wcslen (pRelativeFileName) + 1 <= MAX_PATH); - rcName = ExAllocatePool (NonPagedPool, MAX_PATH); + rcName = ExAllocatePool (NonPagedPool, MAX_PATH * sizeof(WCHAR)); + if (!rcName) + { + return STATUS_INSUFFICIENT_RESOURCES; + } wcscpy (rcName, fcb->PathName); - wcscat (rcName, L"\\"); + if (!vfatFCBIsRoot(fcb)) + wcscat (rcName, L"\\"); wcscat (rcName, pRelativeFileName); *pAbsoluteFilename = rcName; @@ -522,6 +527,10 @@ VfatOpenFile (PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, FileName, &AbsFileName); FileName = AbsFileName; + if (!NT_SUCCESS(Status)) + { + return Status; + } } //FIXME: Get cannonical path name (remove .'s, ..'s and extra separators)