mirror of
https://git.openafs.org/openafs.git
synced 2025-01-21 08:20:16 +00:00
Windows: Redirector Dir Enumeration Bug
An enumerated directory was not validated properly if AFSValidateEntry() was called with PurgeData == FALSE even when a data version change was detected. Now it does. FIXES 130636 Change-Id: Ic5d2fd62b40fb16652fc09d459caf43905566d37 Reviewed-on: http://gerrit.openafs.org/7012 Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com> Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
This commit is contained in:
parent
2982f8c5b1
commit
e53e189c3e
@ -3704,12 +3704,14 @@ AFSValidateEntry( IN AFSDirectoryCB *DirEntry,
|
|||||||
|
|
||||||
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
|
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
|
||||||
AFS_TRACE_LEVEL_VERBOSE_2,
|
AFS_TRACE_LEVEL_VERBOSE_2,
|
||||||
"AFSValidateEntry Validating entry %wZ FID %08lX-%08lX-%08lX-%08lX\n",
|
"AFSValidateEntry Validating entry %wZ FID %08lX-%08lX-%08lX-%08lX PurgeContent %u FastCall %u\n",
|
||||||
&DirEntry->NameInformation.FileName,
|
&DirEntry->NameInformation.FileName,
|
||||||
pObjectInfo->FileId.Cell,
|
pObjectInfo->FileId.Cell,
|
||||||
pObjectInfo->FileId.Volume,
|
pObjectInfo->FileId.Volume,
|
||||||
pObjectInfo->FileId.Vnode,
|
pObjectInfo->FileId.Vnode,
|
||||||
pObjectInfo->FileId.Unique);
|
pObjectInfo->FileId.Unique,
|
||||||
|
PurgeContent,
|
||||||
|
FastCall);
|
||||||
|
|
||||||
//
|
//
|
||||||
// If this is a fake node then bail since the service knows nothing about it
|
// If this is a fake node then bail since the service knows nothing about it
|
||||||
@ -3802,7 +3804,8 @@ AFSValidateEntry( IN AFSDirectoryCB *DirEntry,
|
|||||||
|
|
||||||
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
|
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
|
||||||
AFS_TRACE_LEVEL_VERBOSE,
|
AFS_TRACE_LEVEL_VERBOSE,
|
||||||
"AFSValidateEntry Validating entry FastCall %d %wZ FID %08lX-%08lX-%08lX-%08lX DV %I64X returned DV %I64X FT %d\n",
|
"AFSValidateEntry Validating entry Purge %d FastCall %d %wZ FID %08lX-%08lX-%08lX-%08lX DV %I64X returned DV %I64X FT %d\n",
|
||||||
|
PurgeContent,
|
||||||
FastCall,
|
FastCall,
|
||||||
&DirEntry->NameInformation.FileName,
|
&DirEntry->NameInformation.FileName,
|
||||||
pObjectInfo->FileId.Cell,
|
pObjectInfo->FileId.Cell,
|
||||||
@ -4026,8 +4029,7 @@ AFSValidateEntry( IN AFSDirectoryCB *DirEntry,
|
|||||||
|
|
||||||
AFSDirectoryCB *pCurrentDirEntry = NULL;
|
AFSDirectoryCB *pCurrentDirEntry = NULL;
|
||||||
|
|
||||||
if( pCurrentFcb != NULL &&
|
if( pObjectInfo->DataVersion.QuadPart != pDirEnumEntry->DataVersion.QuadPart)
|
||||||
pObjectInfo->DataVersion.QuadPart != pDirEnumEntry->DataVersion.QuadPart)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -4056,7 +4058,7 @@ AFSValidateEntry( IN AFSDirectoryCB *DirEntry,
|
|||||||
AFSAcquireExcl( pObjectInfo->Specific.Directory.DirectoryNodeHdr.TreeLock,
|
AFSAcquireExcl( pObjectInfo->Specific.Directory.DirectoryNodeHdr.TreeLock,
|
||||||
TRUE);
|
TRUE);
|
||||||
|
|
||||||
AFSValidateDirectoryCache( pCurrentFcb->ObjectInformation,
|
ntStatus = AFSValidateDirectoryCache( pObjectInfo,
|
||||||
AuthGroup);
|
AuthGroup);
|
||||||
|
|
||||||
AFSReleaseResource( pObjectInfo->Specific.Directory.DirectoryNodeHdr.TreeLock);
|
AFSReleaseResource( pObjectInfo->Specific.Directory.DirectoryNodeHdr.TreeLock);
|
||||||
|
Loading…
Reference in New Issue
Block a user