From: pete scott Date: Mon, 11 Aug 2014 17:18:16 +0000 (-0400) Subject: Windows: LocateName skip DFS Link only last component X-Git-Tag: upstream/1.8.0_pre1^2~604 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=dceb8d6336e574a735b9887cf670c229bc6ee446;p=packages%2Fo%2Fopenafs.git Windows: LocateName skip DFS Link only last component As with Mount Points and Symlinks, when AFSLocateName() is called to process a CreateFile with Open_Reparse_Point enabled, DFS Link processing must be disabled only for the last component in the path. Failure to do so results in the AFS Redirector succeeding IRP_MJ_CREATE calls that should be given back to the IO Manager so the path can be evaluated by another file system. Change-Id: I1627e7c6582d3a80d99dd2acc5171135a6a7bc4b Reviewed-on: http://gerrit.openafs.org/11398 Reviewed-by: Peter Scott Tested-by: BuildBot Reviewed-by: Jeffrey Altman --- diff --git a/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp index 70b341b51..bf7851241 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp @@ -1122,7 +1122,8 @@ AFSLocateNameEntry( IN GUID *AuthGroup, case AFS_FILE_TYPE_DFSLINK: { - if( BooleanFlagOn( Flags, AFS_LOCATE_FLAGS_NO_DFS_LINK_EVAL)) + if( BooleanFlagOn( Flags, AFS_LOCATE_FLAGS_NO_DFS_LINK_EVAL) && + uniRemainingPath.Length == 0) { //