Repository navigation
Comparing changes
Open a pull request
base repository: moby/go-archive
base: v0.3.2
head repository: moby/go-archive
compare: v0.3.3
- 14 commits
- 13 files changed
- 4 contributors
Commits on Aug 3, 2026
-
archive: resolve absolute hardlink targets within extraction root
The CVE-2026-17106 hardening rejects hardlink entries whose target is an absolute path. Some image builders (e.g. kaniko) write hardlink targets as absolute paths, so layers of such images fail to extract with "invalid hardlink target" since v0.3.0 (Docker 29.7.0). Resolve absolute hardlink targets relative to the extraction root with chroot-like semantics, matching how absolute symlink targets are handled since 4f6cd58 and how pre-v0.3.0 extraction behaved. The root is stripped from the original linkname rather than the cleaned one, so targets like "/../victim" are not collapsed against "/" but keep failing the filepath.IsLocal check, and the resolved target then passes through resolveArchivePath confined to the os.Root extraction root. Signed-off-by: Yannik Sembritzki <yannik@sembritzki.org>
Configuration menu - View commit details
-
Copy full SHA for 5cd0e30 - Browse repository at this point
Copy the full SHA 5cd0e30View commit details
Commits on Aug 4, 2026
-
Merge pull request #100 from Yannik/fix-absolute-hardlink-targets
archive: resolve absolute hardlink targets within extraction root (fixes #99)
Configuration menu - View commit details
-
Copy full SHA for c4f28d2 - Browse repository at this point
Copy the full SHA c4f28d2View commit details -
archive: add test for chmod fallback on nodev mounts (skipped)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Configuration menu - View commit details
-
Copy full SHA for b9a9304 - Browse repository at this point
Copy the full SHA b9a9304View commit details -
Merge pull request #102 from thaJeztah/chmod_fallback_test
archive: add test for chmod fallback on nodev mounts (skipped)
Configuration menu - View commit details
-
Copy full SHA for f357902 - Browse repository at this point
Copy the full SHA f357902View commit details -
archive: test chmod fallback without procfs in chroot
Add a regression test that runs the chmod fallback after switching into a temporary root without procfs mounted. This reproduces the environment used by chrootarchive, where resolving an O_PATH descriptor through /proc/self/fd is unavailable. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Configuration menu - View commit details
-
Copy full SHA for 3daca2a - Browse repository at this point
Copy the full SHA 3daca2aView commit details -
Merge pull request #105 from thaJeztah/test_chrooted_chmod_fallback
archive: test chmod fallback without procfs in chroot
Configuration menu - View commit details
-
Copy full SHA for 9af1c40 - Browse repository at this point
Copy the full SHA 9af1c40View commit details
Commits on Aug 5, 2026
-
archive: test chmod fallback without read permission
skipping on Linux, which is currently broken. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Configuration menu - View commit details
-
Copy full SHA for 4ffc915 - Browse repository at this point
Copy the full SHA 4ffc915View commit details -
Merge pull request #106 from thaJeztah/fallback_no_read
archive: test chmod fallback without read permission
Configuration menu - View commit details
-
Copy full SHA for f37d413 - Browse repository at this point
Copy the full SHA f37d413View commit details -
archive: fix chmod fallback for device nodes on nodev mounts
Commit [f43ca4d][1] introduced an O_RDONLY-based chmod fallback for systems where fchmodat with AT_SYMLINK_NOFOLLOW is unsupported. Opening a device node this way fails with EACCES when the filesystem is mounted with nodev. Use O_PATH to reference the entry without opening the underlying device, then apply the mode through /proc/self/fd. Keep the existing fallback on non-Linux Unix platforms. [1]: f43ca4d Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Configuration menu - View commit details
-
Copy full SHA for 89653ed - Browse repository at this point
Copy the full SHA 89653edView commit details -
archive: preserve procfs access during chroot extraction
Open /proc/self/fd before switching root and pass the descriptor to the archive extraction internals. This allows the chmod fallback to resolve pinned O_PATH descriptors when procfs is not mounted inside the chroot. Keep the descriptor owned by chrootarchive and expose it through internal archive options for the duration of the extraction. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Configuration menu - View commit details
-
Copy full SHA for 2d863f5 - Browse repository at this point
Copy the full SHA 2d863f5View commit details -
archive: keep procfs file alive during fchmodat
Keep ProcSelfFD reachable until fchmodat completes. Without an explicit liveness reference, the os.File may become eligible for finalization after Fd returns, allowing its descriptor to be closed while the syscall is in progress. Co-authored-by: Paweł Gronowski <pawel.gronowski@docker.com> Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Configuration menu - View commit details
-
Copy full SHA for e738eed - Browse repository at this point
Copy the full SHA e738eedView commit details -
Merge pull request #103 from thaJeztah/fix_chmod_fallback
archive: fix chmod fallback for device nodes on nodev mounts
Configuration menu - View commit details
-
Copy full SHA for 1e8dfbc - Browse repository at this point
Copy the full SHA 1e8dfbcView commit details -
archive: set close-on-exec for chmod fallback descriptors
Open temporary descriptors with O_CLOEXEC to prevent inheritance by concurrently started child processes. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Configuration menu - View commit details
-
Copy full SHA for 98ff1da - Browse repository at this point
Copy the full SHA 98ff1daView commit details -
Merge pull request #104 from thaJeztah/use_O_CLOEXEC
archive: set close-on-exec for chmod fallback descriptors
Configuration menu - View commit details
-
Copy full SHA for ae9e219 - Browse repository at this point
Copy the full SHA ae9e219View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.3.2...v0.3.3
