Page MenuHomeFreeBSD

D57946.diff
No OneTemporary

D57946.diff

diff --git a/sysutils/podman/Makefile b/sysutils/podman/Makefile
--- a/sysutils/podman/Makefile
+++ b/sysutils/podman/Makefile
@@ -1,6 +1,6 @@
PORTNAME= podman
DISTVERSIONPREFIX= v
-DISTVERSION= 5.8.3
+DISTVERSION= 5.8.4
CATEGORIES= sysutils
MAINTAINER= dfr@FreeBSD.org
diff --git a/sysutils/podman/distinfo b/sysutils/podman/distinfo
--- a/sysutils/podman/distinfo
+++ b/sysutils/podman/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1782119625
-SHA256 (containers-podman-v5.8.3_GH0.tar.gz) = c54a2ec4b4fb5577288992aaa78684397ec3552fb2d1234d910ec50097d05c0f
-SIZE (containers-podman-v5.8.3_GH0.tar.gz) = 20826467
+TIMESTAMP = 1782813721
+SHA256 (containers-podman-v5.8.4_GH0.tar.gz) = be01c20923ed7642a5ad039f83252e3b7d09f0e3431d01284a5beff6c123671c
+SIZE (containers-podman-v5.8.4_GH0.tar.gz) = 20610699
diff --git a/sysutils/podman/files/patch-vendor_go.podman.io_storage_pkg_archive_archive__bsd.go b/sysutils/podman/files/patch-vendor_go.podman.io_storage_pkg_archive_archive__bsd.go
new file mode 100644
--- /dev/null
+++ b/sysutils/podman/files/patch-vendor_go.podman.io_storage_pkg_archive_archive__bsd.go
@@ -0,0 +1,38 @@
+Fix loss of setuid/setgid/sticky bits during BSD untar.
+
+Directly casting Go's os.FileMode to uint32 in handleLChmod silently
+dropped setuid/setgid/sticky bits on BSD systems, since they are
+high-order bits that don't map to POSIX chmod(2) bit positions.
+
+https://github.com/podman-container-tools/container-libs/pull/935
+
+--- vendor/go.podman.io/storage/pkg/archive/archive_bsd.go.orig 2025-06-28 00:00:00 UTC
++++ vendor/go.podman.io/storage/pkg/archive/archive_bsd.go
+@@ -9,10 +9,26 @@ import (
+ "golang.org/x/sys/unix"
+ )
+
++// syscallMode maps a Go os.FileMode to chmod(2) bits, preserving the
++// setuid/setgid/sticky bits that a raw uint32(FileMode) cast silently drops.
++func syscallMode(i os.FileMode) (o uint32) {
++ o = uint32(i.Perm())
++ if i&os.ModeSetuid != 0 {
++ o |= unix.S_ISUID
++ }
++ if i&os.ModeSetgid != 0 {
++ o |= unix.S_ISGID
++ }
++ if i&os.ModeSticky != 0 {
++ o |= unix.S_ISVTX
++ }
++ return o
++}
++
+ func handleLChmod(hdr *tar.Header, path string, hdrInfo os.FileInfo, forceMask *os.FileMode) error {
+ permissionsMask := hdrInfo.Mode()
+ if forceMask != nil {
+ permissionsMask = *forceMask
+ }
+- return unix.Fchmodat(unix.AT_FDCWD, path, uint32(permissionsMask), unix.AT_SYMLINK_NOFOLLOW)
++ return unix.Fchmodat(unix.AT_FDCWD, path, syscallMode(permissionsMask), unix.AT_SYMLINK_NOFOLLOW)
+ }

File Metadata

Mime Type
text/plain
Expires
Fri, Jul 17, 4:41 AM (7 h, 22 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35159270
Default Alt Text
D57946.diff (2 KB)

Event Timeline