Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8343020

(fs) Add support for SecureDirectoryStream on macOS

XMLWordPrintable

    • Icon: New Feature New Feature
    • Resolution: Fixed
    • Icon: P4 P4
    • 24
    • None
    • core-libs
    • None
    • b22
    • aarch64
    • os_x

      OpenJDK will not produce SecureDirectoryStreams on MacOS. Support for SecureDirectoryStream on UNIX-like OSes is predicated on the `SUPPORTS_OPENAT` flag in UnixNativeDispatcher. That flag in turn is set when the runtime environment supports `openat`, `fstatat`, `unlinkat`, `renameat`, `futimesat`, and `fdopendir`.

      This fails on MacOS because `futimesat` does not exist on that platform, apparently having been a proposed-but-not-accepted part of POSIX some time ago. While there is an indirect replacement that is supported on MacOS - `utimensat` - this is not actually needed, because the unique functionality provided by `futimesat` (that is, performing the action of `futimes` relative to an open directory file descriptor) is not utilized, since the only place this function is used passes `NULL` as the relative filename argument.

      Replacing this with simply calling `futimes` instead allows `SecureDirectoryStream` to function on MacOS.

      Additionally, we must ensure that `openat`, `fstatat`, and `fdopendir` are properly detected on MacOS x64, because there are 32- and 64-bit variations on that platform which misbehave subtly when done improperly.

            dmlloyd David Lloyd
            dmlloyd David Lloyd
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: