libpod: Move uses of unix.O_PATH to container_internal_linux.go

The O_PATH flag is a recent addition to the open syscall and is not
present in darwin or in FreeBSD releases before 13.1. The constant is
not present in the FreeBSD version of x/sys/unix since that package
supports FreeBSD 12.3 and later.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
This commit is contained in:
Doug Rabson 2022-08-16 11:15:57 +01:00
parent 5d7778411a
commit 1572420c3f
3 changed files with 10 additions and 2 deletions

View File

@ -1545,7 +1545,7 @@ func (c *Container) mountStorage() (_ string, deferredErr error) {
rootUID, rootGID := c.RootUID(), c.RootGID()
dirfd, err := unix.Open(mountPoint, unix.O_RDONLY|unix.O_PATH, 0)
dirfd, err := openDirectory(mountPoint)
if err != nil {
return "", fmt.Errorf("open mount point: %w", err)
}
@ -1568,7 +1568,7 @@ func (c *Container) mountStorage() (_ string, deferredErr error) {
return "", fmt.Errorf("resolve /etc in the container: %w", err)
}
etcInTheContainerFd, err := unix.Open(etcInTheContainerPath, unix.O_RDONLY|unix.O_PATH, 0)
etcInTheContainerFd, err := openDirectory(etcInTheContainerPath)
if err != nil {
return "", fmt.Errorf("open /etc in the container: %w", err)
}

View File

@ -3249,3 +3249,7 @@ func (c *Container) setupRootlessNetwork() error {
}
return nil
}
func openDirectory(path string) (fd int, err error) {
return unix.Open(path, unix.O_RDONLY|unix.O_PATH, 0)
}

View File

@ -93,3 +93,7 @@ func getLocalhostHostEntry(c *Container) etchosts.HostEntries {
func isRootlessCgroupSet(cgroup string) bool {
return false
}
func openDirectory(path string) (fd int, err error) {
return -1, errors.New("unsupported openDirectory")
}