pVolumeCB,
pParentDirectoryCB,
pDirectoryCB,
+ bOpenedReparsePoint,
&pFcb,
&pCcb);
IN AFSVolumeCB *VolumeCB,
IN AFSDirectoryCB *ParentDirCB,
IN AFSDirectoryCB *DirectoryCB,
+ IN BOOLEAN bOpenedReparsePoint,
OUT AFSFcb **Fcb,
OUT AFSCcb **Ccb)
{
ntStatus = AFSValidateEntry( DirectoryCB,
AuthGroup,
- FALSE,
+ bOpenedReparsePoint,
TRUE);
if( !NT_SUCCESS( ntStatus))
pFcb->ObjectInformation->FileId.Unique));
ntStatus = AFSVerifyEntry( &pCcb->AuthGroup,
- pCcb->DirectoryCB);
+ pCcb->DirectoryCB,
+ FALSE);
if( !NT_SUCCESS( ntStatus))
{
ntStatus = AFSValidateEntry( pDirEntry,
&pCcb->AuthGroup,
- FALSE,
+ TRUE,
FALSE);
if ( NT_SUCCESS( ntStatus))
{
pFcb->ObjectInformation->FileId.Unique));
ntStatus = AFSVerifyEntry( &pCcb->AuthGroup,
- pCcb->DirectoryCB);
+ pCcb->DirectoryCB,
+ FALSE);
if( !NT_SUCCESS( ntStatus))
{
&stAuthGroup);
ntStatus = AFSVerifyEntry( &stAuthGroup,
- pCcb->DirectoryCB);
+ pCcb->DirectoryCB,
+ FALSE);
if ( NT_SUCCESS( ntStatus))
{
NTSTATUS
AFSVerifyEntry( IN GUID *AuthGroup,
- IN AFSDirectoryCB *DirEntry)
+ IN AFSDirectoryCB *DirEntry,
+ IN BOOLEAN bFollowMountPoint)
{
NTSTATUS ntStatus = STATUS_SUCCESS;
ntStatus = AFSEvaluateTargetByID( pObjectInfo,
AuthGroup,
- FALSE,
+ bFollowMountPoint ? FALSE : TRUE,
&pDirEnumEntry);
if( !NT_SUCCESS( ntStatus))
TRUE);
ntStatus = AFSVerifyEntry( AuthGroup,
- pDirEntry);
+ pDirEntry,
+ FALSE);
AFSReleaseResource( pCurrentObject->Specific.Directory.DirectoryNodeHdr.TreeLock);
//
ntStatus = AFSVerifyEntry( AuthGroup,
- pDirEntry);
+ pDirEntry,
+ FALSE);
AFSReleaseResource( pCurrentObject->Specific.Directory.DirectoryNodeHdr.TreeLock);
TRUE);
ntStatus = AFSVerifyEntry( AuthGroup,
- pParentDirEntry);
+ pParentDirEntry,
+ FALSE);
AFSReleaseResource( pParentDirEntry->ObjectInformation->Specific.Directory.DirectoryNodeHdr.TreeLock);
ParentObjectInfo->FileId.Unique));
ntStatus = AFSVerifyEntry( AuthGroup,
- ParentDirCB);
+ ParentDirCB,
+ FALSE);
if( !NT_SUCCESS( ntStatus))
{
TRUE);
ntStatus = AFSVerifyEntry( AuthGroup,
- pDirEntry);
+ pDirEntry,
+ FALSE);
AFSReleaseResource( pDirEntry->ObjectInformation->Specific.Directory.DirectoryNodeHdr.TreeLock);
IN AFSVolumeCB *VolumeCB,
IN AFSDirectoryCB *ParentDirCB,
IN AFSDirectoryCB *DirectoryCB,
+ IN BOOLEAN bOpenedReparsePoint,
OUT AFSFcb **Fcb,
OUT AFSCcb **Ccb);
NTSTATUS
AFSVerifyEntry( IN GUID *AuthGroup,
- IN AFSDirectoryCB *DirectoryCB);
+ IN AFSDirectoryCB *DirectoryCB,
+ IN BOOLEAN bFollowMountPoint);
NTSTATUS
AFSSetVolumeState( IN AFSVolumeStatusCB *VolumeStatus);
dscp, scp, userp, &req,
FileName, shortName,
(bWow64 ? RDR_POP_WOW64 : 0) |
- (bNoFollow ? 0 : (RDR_POP_FOLLOW_MOUNTPOINTS | RDR_POP_EVALUATE_SYMLINKS)),
+ (bNoFollow ? 0 : RDR_POP_FOLLOW_MOUNTPOINTS) |
+ RDR_POP_EVALUATE_SYMLINKS,
0, NULL, &dwRemaining);
if (bHoldFid)
RDR_FlagScpInUse( scp, FALSE );
code = RDR_PopulateCurrentEntry(pCurrentEntry, dwRemaining,
dscp, scp, userp, &req, NULL, NULL,
(bWow64 ? RDR_POP_WOW64 : 0) |
- (bNoFollow ? 0 : (RDR_POP_FOLLOW_MOUNTPOINTS | RDR_POP_EVALUATE_SYMLINKS)),
+ (bNoFollow ? 0 : RDR_POP_FOLLOW_MOUNTPOINTS) |
+ RDR_POP_EVALUATE_SYMLINKS,
0, NULL, &dwRemaining);
if (bHoldFid)