From f915b4ef15bf815d9405284130e031bd558ce8f1 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Tue, 26 Mar 2013 08:59:14 -0400 Subject: [PATCH] Windows: AFSDeleteDirEntry deleted flag shuffle Move the assignment of the deleted flag earlier in AFSDeleteDirEntry() to avoid potential invalid memory access. Change-Id: I6d0e1272cc9f2bb491ad291a65b94c53ced9a354 Reviewed-on: http://gerrit.openafs.org/9672 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp index 376ca2df3..8930dd168 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp @@ -2797,6 +2797,13 @@ AFSDeleteDirEntry( IN AFSObjectInfoCB *ParentObjectInfo, AFSExFreePoolWithTag( DirEntry->NameInformation.TargetName.Buffer, 0); } + if( BooleanFlagOn( DirEntry->Flags, AFS_DIR_ENTRY_DELETED) && + DirEntry->ObjectInformation->Links == 0) + { + + SetFlag( DirEntry->ObjectInformation->Flags, AFS_OBJECT_FLAGS_DELETED); + } + // // Dereference the object for this dir entry // @@ -2810,13 +2817,6 @@ AFSDeleteDirEntry( IN AFSObjectInfoCB *ParentObjectInfo, DirEntry->ObjectInformation, lCount)); - if( BooleanFlagOn( DirEntry->Flags, AFS_DIR_ENTRY_DELETED) && - DirEntry->ObjectInformation->Links == 0) - { - - SetFlag( DirEntry->ObjectInformation->Flags, AFS_OBJECT_FLAGS_DELETED); - } - ExDeleteResourceLite( &DirEntry->NonPaged->Lock); AFSExFreePoolWithTag( DirEntry->NonPaged, AFS_DIR_ENTRY_NP_TAG); -- 2.39.5