Author: tfaber Date: Thu Nov 6 00:07:01 2014 New Revision: 65278
URL: http://svn.reactos.org/svn/reactos?rev=65278&view=rev Log: [FASTFAT] - Fix failure case handling in vfatUpdateFCB - NULL output parameters on failure in vfatGetFCBForFile - Fix a few typos
Modified: trunk/reactos/drivers/filesystems/fastfat/create.c trunk/reactos/drivers/filesystems/fastfat/fcb.c
Modified: trunk/reactos/drivers/filesystems/fastfat/create.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfat... ============================================================================== --- trunk/reactos/drivers/filesystems/fastfat/create.c [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/fastfat/create.c [iso-8859-1] Thu Nov 6 00:07:01 2014 @@ -583,7 +583,7 @@
idx = FileObject->FileName.Length / sizeof(WCHAR) - 1;
- /* Skip tailing \ - if any */ + /* Skip trailing \ - if any */ if (PathNameU.Buffer[idx] == L'\') { --idx;
Modified: trunk/reactos/drivers/filesystems/fastfat/fcb.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfat... ============================================================================== --- trunk/reactos/drivers/filesystems/fastfat/fcb.c [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/fastfat/fcb.c [iso-8859-1] Thu Nov 6 00:07:01 2014 @@ -371,21 +371,21 @@
DPRINT("vfatUpdateFCB(%p, %p, %wZ, %wZ, %p)\n", pVCB, Fcb, LongName, ShortName, ParentFcb);
- /* Delete old name */ - if (Fcb->PathNameBuffer) - { - ExFreePoolWithTag(Fcb->PathNameBuffer, TAG_FCB); - } - - /* Delete from table */ - vfatDelFCBFromTable(pVCB, Fcb); - /* Get full path name */ Status = vfatMakeFullName(ParentFcb, LongName, ShortName, &Fcb->PathNameU); if (!NT_SUCCESS(Status)) { return Status; } + + /* Delete old name */ + if (Fcb->PathNameBuffer) + { + ExFreePoolWithTag(Fcb->PathNameBuffer, TAG_FCB); + } + + /* Delete from table */ + vfatDelFCBFromTable(pVCB, Fcb);
/* Split it properly */ Fcb->PathNameBuffer = Fcb->PathNameU.Buffer; @@ -414,8 +414,8 @@ /* Add to the table */ vfatAddFCBToTable(pVCB, Fcb);
- /* If we moved accross directories, dereferenced our old parent - * We also derefence in case we're just renaming since AddFCBToTable references it + /* If we moved across directories, dereference our old parent + * We also dereference in case we're just renaming since AddFCBToTable references it */ vfatReleaseFCB(pVCB, OldParent);
@@ -887,7 +887,7 @@ if (parentFCB) { vfatReleaseFCB(pVCB, parentFCB); - parentFCB = 0; + parentFCB = NULL; } // fail if element in FCB is not a directory if (!vfatFCBIsDirectory(FCB)) @@ -910,6 +910,8 @@ if (FileNameU.Length + parentFCB->LongNameU.Length - Length > FileNameU.MaximumLength) { vfatReleaseFCB(pVCB, parentFCB); + *pParentFCB = NULL; + *pFCB = NULL; return STATUS_OBJECT_NAME_INVALID; } RtlMoveMemory(prev + parentFCB->LongNameU.Length / sizeof(WCHAR), curr,