github Listenarrs/Listenarr v1.3.2-canary
Canary 1.3.2

pre-release9 hours ago

Summary

Fixes #827.

Linux O_DIRECTORY and O_NOFOLLOW are process-ABI dependent, but Listenarr was composing libc open / openat flags from duplicated asm-generic/x86 values. On ARM64, those bit positions mean different flags: directory opens can fail with EINVAL on filesystems that reject the accidental O_DIRECT, and pinned file opens can lose the intended O_NOFOLLOW symlink fence.

This fixes the root cause for the Unix platforms Listenarr actually releases. Unix open flag construction is centralized, Linux selects the correct values from RuntimeInformation.ProcessArchitecture, and architecture support is intentionally limited to the published targets: linux-x64, linux-arm64, and osx-x64. Any other Linux or macOS process architecture fails closed instead of receiving an untested native-open mapping.

Changes

Added

  • UnixOpenFlags as the single source of truth for Unix open / openat flag composition.
  • regression coverage for the released Unix architecture matrix and explicit rejection of non-released architectures.

Changed

  • all filesystem libc open / openat callers to use centralized flag construction.
  • released Linux mappings:
    • ARM64: O_DIRECTORY = 1 << 14, O_NOFOLLOW = 1 << 15
    • x64: O_DIRECTORY = 1 << 16, O_NOFOLLOW = 1 << 17
  • macOS retains the existing Darwin flag values, but only the released x64 process architecture is accepted.

Fixed

  • ARM64 directory opens no longer accidentally request unrelated flags such as O_DIRECT.
  • pinned/no-follow file opens retain their symlink fence on ARM64.
  • unsupported Linux and macOS architectures no longer inherit constants or imply a Listenarr support guarantee.

Testing

  • dotnet format listenarr.slnx --no-restore --verify-no-changes
  • infrastructure build — 0 warnings, 0 errors
  • full backend suite — 3,141 total; 2,985 passed; 156 platform-skipped; 0 failed
  • ARM64 Linux .NET P/Invoke probe under Docker/QEMU:
    • correc...

Automated Canary build

Don't miss a new Listenarr release

NewReleases is sending notifications on new releases.