Subject: Re: [Boost-bugs] [Boost C++ Libraries] #10900: read_symlink fails to correctly read NTFS junctions
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-01-07 21:03:25
#10900: read_symlink fails to correctly read NTFS junctions
-------------------------------------------------+------------------------
Reporter: Benjamin Kummer-Hardt <benjamin@â¦> | Owner: bemandawes
Type: Bugs | Status: new
Milestone: To Be Determined | Component: filesystem
Version: Boost 1.57.0 | Severity: Problem
Resolution: | Keywords:
-------------------------------------------------+------------------------
Comment (by anonymous):
There are multiple types of reparse points other than symlinks and
junctions - the types supported (IO_REPARSE_TAG_MOUNT_POINT and
IO_REPARSE_TAG_SYMLINK) must both be explicitly detected in order to
reject anything else.
Other issues:
1. read_symlink extracts the reparse point's PrintName, which isn't
guaranteed to be valid - according to http://msdn.microsoft.com/en-
us/library/cc232006.aspx, "the print name SHOULD be an informative
pathname, suitable for display to a user, that also identifies the target
of the symbolic link", but it's not guaranteed to be the actual target
(most notably, with junctions created using the Sysinternals junction.exe
tool, the PrintName is completely empty). It should probably be extracting
the SubstituteName instead, though that would likely require stripping off
the leading "\??\" to yield a properly usable pathname (unless it's a
device ID, in which case all bets are off).
2. If Junction support is added, it should not be restricted to Windows
Vista and later, since directory junctions were introduced back in Windows
2000.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/10900#comment:1> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:17 UTC