* fhandler_disk_file.cc (is_volume_mountpoint): Align check with
symlink_info::check_reparse_point(). * path.cc (symlink_info::check_reparse_point): Rearrange slightly. Add code path for unrecognized repare point types. Add comment.
This commit is contained in:
		@@ -154,6 +154,7 @@ is_volume_mountpoint (POBJECT_ATTRIBUTES attr)
 | 
			
		||||
  bool ret = false;
 | 
			
		||||
  IO_STATUS_BLOCK io;
 | 
			
		||||
  HANDLE reph;
 | 
			
		||||
  UNICODE_STRING subst;
 | 
			
		||||
 | 
			
		||||
  if (NT_SUCCESS (NtOpenFile (&reph, READ_CONTROL, attr, &io,
 | 
			
		||||
			      FILE_SHARE_VALID_FLAGS,
 | 
			
		||||
@@ -166,7 +167,11 @@ is_volume_mountpoint (POBJECT_ATTRIBUTES attr)
 | 
			
		||||
		      &io, FSCTL_GET_REPARSE_POINT, NULL, 0,
 | 
			
		||||
		      (LPVOID) rp, MAXIMUM_REPARSE_DATA_BUFFER_SIZE))
 | 
			
		||||
	  && rp->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT
 | 
			
		||||
	  && rp->SymbolicLinkReparseBuffer.PrintNameLength == 0)
 | 
			
		||||
	  && (RtlInitCountedUnicodeString (&subst, 
 | 
			
		||||
		(WCHAR *)((char *)rp->MountPointReparseBuffer.PathBuffer
 | 
			
		||||
			  + rp->MountPointReparseBuffer.SubstituteNameOffset),
 | 
			
		||||
		rp->MountPointReparseBuffer.SubstituteNameLength),
 | 
			
		||||
	      RtlEqualUnicodePathPrefix (&subst, &ro_u_volume, TRUE)))
 | 
			
		||||
	ret = true;
 | 
			
		||||
      NtClose (reph);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user