Author eryksun
Recipients eryksun, paul.moore, steve.dower, tim.golden, zach.ware
Date 2019-08-12.22:47:52
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1565650072.62.0.0941014718801.issue37834@roundup.psfhosted.org>
In-reply-to
Content
> How about adding a separate function such as nt.read_reparse_point()

If we support reading junctions, this should be using the substitute name (with \??\ replaced by \\?\) instead of the print name. For both symlinks and junctions, [MS-FSCC] 2.1.2 states that the print name SHOULD be informative, not that it MUST be, where SHOULD and MUST are defined by RFC2119. The print name can be non-informative for some reason (e.g. maybe to use the whole 16 KiB buffer for the target path.) For symlinks that's not normally observed, since CreateSymbolicLinkW is conservative. For junctions, applications and frameworks use a low-level IOCTL to set them, and they're not necessarily bothering to set a print name. For example, PowerShell omits it:

    PS C:\Mount> new-item Spam -type junction -value C:\Temp\Spam | out-null
    PS C:\Mount> fsutil.exe reparsepoint query spam
    Reparse Tag Value : 0xa0000003
    Tag value: Microsoft
    Tag value: Name Surrogate
    Tag value: Mount Point
    Substitue Name offset: 0
    Substitue Name length: 32
    Print Name offset:     34
    Print Name Length:     0
    Substitute Name:       \??\C:\Temp\Spam

This mount point works fine despite the lack of a print name.
History
Date User Action Args
2019-08-12 22:47:52eryksunsetrecipients: + eryksun, paul.moore, tim.golden, zach.ware, steve.dower
2019-08-12 22:47:52eryksunsetmessageid: <1565650072.62.0.0941014718801.issue37834@roundup.psfhosted.org>
2019-08-12 22:47:52eryksunlinkissue37834 messages
2019-08-12 22:47:52eryksuncreate