mirror of
				https://github.com/containers/podman.git
				synced 2025-11-04 00:50:15 +08:00 
			
		
		
		
	Update vendor of containers/buildah
Changes since 2022-05-31: - add --omit-history option (buildah PR 4028) Signed-off-by: Ed Santiago <santiago@redhat.com> Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
		
							
								
								
									
										8
									
								
								vendor/github.com/containers/storage/.cirrus.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/containers/storage/.cirrus.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -17,14 +17,14 @@ env:
 | 
			
		||||
    ####
 | 
			
		||||
    #### Cache-image names to test with (double-quotes around names are critical)
 | 
			
		||||
    ###
 | 
			
		||||
    FEDORA_NAME: "fedora-35"
 | 
			
		||||
    PRIOR_FEDORA_NAME: "fedora-34"
 | 
			
		||||
    UBUNTU_NAME: "ubuntu-2104"
 | 
			
		||||
    FEDORA_NAME: "fedora-36"
 | 
			
		||||
    PRIOR_FEDORA_NAME: "fedora-35"
 | 
			
		||||
    UBUNTU_NAME: "ubuntu-2204"
 | 
			
		||||
 | 
			
		||||
    # GCE project where images live
 | 
			
		||||
    IMAGE_PROJECT: "libpod-218412"
 | 
			
		||||
    # VM Image built in containers/automation_images
 | 
			
		||||
    IMAGE_SUFFIX: "c4512539143831552"
 | 
			
		||||
    IMAGE_SUFFIX: "c5878804328480768"
 | 
			
		||||
    FEDORA_CACHE_IMAGE_NAME: "fedora-${IMAGE_SUFFIX}"
 | 
			
		||||
    PRIOR_FEDORA_CACHE_IMAGE_NAME: "prior-fedora-${IMAGE_SUFFIX}"
 | 
			
		||||
    UBUNTU_CACHE_IMAGE_NAME: "ubuntu-${IMAGE_SUFFIX}"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										109
									
								
								vendor/github.com/containers/storage/drivers/chown_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								vendor/github.com/containers/storage/drivers/chown_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,109 @@
 | 
			
		||||
//go:build darwin
 | 
			
		||||
// +build darwin
 | 
			
		||||
 | 
			
		||||
package graphdriver
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"syscall"
 | 
			
		||||
 | 
			
		||||
	"github.com/containers/storage/pkg/idtools"
 | 
			
		||||
	"github.com/containers/storage/pkg/system"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type inode struct {
 | 
			
		||||
	Dev uint64
 | 
			
		||||
	Ino uint64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type platformChowner struct {
 | 
			
		||||
	mutex  sync.Mutex
 | 
			
		||||
	inodes map[inode]bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newLChowner() *platformChowner {
 | 
			
		||||
	return &platformChowner{
 | 
			
		||||
		inodes: make(map[inode]bool),
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *platformChowner) LChown(path string, info os.FileInfo, toHost, toContainer *idtools.IDMappings) error {
 | 
			
		||||
	st, ok := info.Sys().(*syscall.Stat_t)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	i := inode{
 | 
			
		||||
		Dev: uint64(st.Dev),
 | 
			
		||||
		Ino: uint64(st.Ino),
 | 
			
		||||
	}
 | 
			
		||||
	c.mutex.Lock()
 | 
			
		||||
	_, found := c.inodes[i]
 | 
			
		||||
	if !found {
 | 
			
		||||
		c.inodes[i] = true
 | 
			
		||||
	}
 | 
			
		||||
	c.mutex.Unlock()
 | 
			
		||||
 | 
			
		||||
	if found {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Map an on-disk UID/GID pair from host to container
 | 
			
		||||
	// using the first map, then back to the host using the
 | 
			
		||||
	// second map.  Skip that first step if they're 0, to
 | 
			
		||||
	// compensate for cases where a parent layer should
 | 
			
		||||
	// have had a mapped value, but didn't.
 | 
			
		||||
	uid, gid := int(st.Uid), int(st.Gid)
 | 
			
		||||
	if toContainer != nil {
 | 
			
		||||
		pair := idtools.IDPair{
 | 
			
		||||
			UID: uid,
 | 
			
		||||
			GID: gid,
 | 
			
		||||
		}
 | 
			
		||||
		mappedUID, mappedGID, err := toContainer.ToContainer(pair)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			if (uid != 0) || (gid != 0) {
 | 
			
		||||
				return fmt.Errorf("error mapping host ID pair %#v for %q to container: %v", pair, path, err)
 | 
			
		||||
			}
 | 
			
		||||
			mappedUID, mappedGID = uid, gid
 | 
			
		||||
		}
 | 
			
		||||
		uid, gid = mappedUID, mappedGID
 | 
			
		||||
	}
 | 
			
		||||
	if toHost != nil {
 | 
			
		||||
		pair := idtools.IDPair{
 | 
			
		||||
			UID: uid,
 | 
			
		||||
			GID: gid,
 | 
			
		||||
		}
 | 
			
		||||
		mappedPair, err := toHost.ToHostOverflow(pair)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return fmt.Errorf("error mapping container ID pair %#v for %q to host: %v", pair, path, err)
 | 
			
		||||
		}
 | 
			
		||||
		uid, gid = mappedPair.UID, mappedPair.GID
 | 
			
		||||
	}
 | 
			
		||||
	if uid != int(st.Uid) || gid != int(st.Gid) {
 | 
			
		||||
		cap, err := system.Lgetxattr(path, "security.capability")
 | 
			
		||||
		if err != nil && !errors.Is(err, system.EOPNOTSUPP) && err != system.ErrNotSupportedPlatform {
 | 
			
		||||
			return fmt.Errorf("%s: %v", os.Args[0], err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Make the change.
 | 
			
		||||
		if err := system.Lchown(path, uid, gid); err != nil {
 | 
			
		||||
			return fmt.Errorf("%s: %v", os.Args[0], err)
 | 
			
		||||
		}
 | 
			
		||||
		// Restore the SUID and SGID bits if they were originally set.
 | 
			
		||||
		if (info.Mode()&os.ModeSymlink == 0) && info.Mode()&(os.ModeSetuid|os.ModeSetgid) != 0 {
 | 
			
		||||
			if err := system.Chmod(path, info.Mode()); err != nil {
 | 
			
		||||
				return fmt.Errorf("%s: %v", os.Args[0], err)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if cap != nil {
 | 
			
		||||
			if err := system.Lsetxattr(path, "security.capability", cap, 0); err != nil {
 | 
			
		||||
				return fmt.Errorf("%s: %v", os.Args[0], err)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										4
									
								
								vendor/github.com/containers/storage/drivers/chown_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/containers/storage/drivers/chown_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -1,5 +1,5 @@
 | 
			
		||||
//go:build !windows
 | 
			
		||||
// +build !windows
 | 
			
		||||
//go:build !windows && !darwin
 | 
			
		||||
// +build !windows,!darwin
 | 
			
		||||
 | 
			
		||||
package graphdriver
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								vendor/github.com/containers/storage/drivers/driver_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								vendor/github.com/containers/storage/drivers/driver_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
package graphdriver
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	// Slice of drivers that should be used in order
 | 
			
		||||
	priority = []string{
 | 
			
		||||
		"vfs",
 | 
			
		||||
	}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GetFSMagic returns the filesystem id given the path.
 | 
			
		||||
func GetFSMagic(rootpath string) (FsMagic, error) {
 | 
			
		||||
	// Note it is OK to return FsMagicUnsupported on Windows.
 | 
			
		||||
	return FsMagicUnsupported, nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/containers/storage/drivers/driver_unsupported.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containers/storage/drivers/driver_unsupported.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -1,4 +1,4 @@
 | 
			
		||||
// +build !linux,!windows,!freebsd,!solaris
 | 
			
		||||
// +build !linux,!windows,!freebsd,!solaris,!darwin
 | 
			
		||||
 | 
			
		||||
package graphdriver
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								vendor/github.com/containers/storage/drivers/fsdiff.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/containers/storage/drivers/fsdiff.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -2,6 +2,8 @@ package graphdriver
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"io"
 | 
			
		||||
	"os"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/containers/storage/pkg/archive"
 | 
			
		||||
@ -170,9 +172,16 @@ func (gdw *NaiveDiffDriver) ApplyDiff(id, parent string, options ApplyDiffOpts)
 | 
			
		||||
	}
 | 
			
		||||
	defer driver.Put(id)
 | 
			
		||||
 | 
			
		||||
	defaultForceMask := os.FileMode(0700)
 | 
			
		||||
	var forceMask *os.FileMode = nil
 | 
			
		||||
	if runtime.GOOS == "darwin" {
 | 
			
		||||
		forceMask = &defaultForceMask
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tarOptions := &archive.TarOptions{
 | 
			
		||||
		InUserNS:          userns.RunningInUserNS(),
 | 
			
		||||
		IgnoreChownErrors: options.IgnoreChownErrors,
 | 
			
		||||
		ForceMask:         forceMask,
 | 
			
		||||
	}
 | 
			
		||||
	if options.Mappings != nil {
 | 
			
		||||
		tarOptions.UIDMaps = options.Mappings.UIDs()
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										5
									
								
								vendor/github.com/containers/storage/drivers/vfs/driver.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/containers/storage/drivers/vfs/driver.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -5,6 +5,7 @@ import (
 | 
			
		||||
	"io"
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
@ -170,6 +171,10 @@ func (d *Driver) create(id, parent string, opts *graphdriver.CreateOpts, ro bool
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	rootPerms := defaultPerms
 | 
			
		||||
	if runtime.GOOS == "darwin" {
 | 
			
		||||
		rootPerms = os.FileMode(0700)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if parent != "" {
 | 
			
		||||
		st, err := system.Stat(d.dir(parent))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								vendor/github.com/containers/storage/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/github.com/containers/storage/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -5,30 +5,30 @@ module github.com/containers/storage
 | 
			
		||||
require (
 | 
			
		||||
	github.com/BurntSushi/toml v1.1.0
 | 
			
		||||
	github.com/Microsoft/go-winio v0.5.2
 | 
			
		||||
	github.com/Microsoft/hcsshim v0.9.2
 | 
			
		||||
	github.com/Microsoft/hcsshim v0.9.3
 | 
			
		||||
	github.com/containerd/stargz-snapshotter/estargz v0.11.4
 | 
			
		||||
	github.com/cyphar/filepath-securejoin v0.2.3
 | 
			
		||||
	github.com/docker/go-units v0.4.0
 | 
			
		||||
	github.com/google/go-intervals v0.0.2
 | 
			
		||||
	github.com/hashicorp/go-multierror v1.1.1
 | 
			
		||||
	github.com/json-iterator/go v1.1.12
 | 
			
		||||
	github.com/klauspost/compress v1.15.4
 | 
			
		||||
	github.com/klauspost/compress v1.15.6
 | 
			
		||||
	github.com/klauspost/pgzip v1.2.5
 | 
			
		||||
	github.com/mattn/go-shellwords v1.0.12
 | 
			
		||||
	github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible
 | 
			
		||||
	github.com/moby/sys/mountinfo v0.6.1
 | 
			
		||||
	github.com/moby/sys/mountinfo v0.6.2
 | 
			
		||||
	github.com/opencontainers/go-digest v1.0.0
 | 
			
		||||
	github.com/opencontainers/runc v1.1.2
 | 
			
		||||
	github.com/opencontainers/runc v1.1.1-0.20220607072441-a7a45d7d2721
 | 
			
		||||
	github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417
 | 
			
		||||
	github.com/opencontainers/selinux v1.10.1
 | 
			
		||||
	github.com/pkg/errors v0.9.1
 | 
			
		||||
	github.com/sirupsen/logrus v1.8.1
 | 
			
		||||
	github.com/stretchr/testify v1.7.1
 | 
			
		||||
	github.com/stretchr/testify v1.7.2
 | 
			
		||||
	github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635
 | 
			
		||||
	github.com/tchap/go-patricia v2.3.0+incompatible
 | 
			
		||||
	github.com/ulikunitz/xz v0.5.10
 | 
			
		||||
	github.com/vbatts/tar-split v0.11.2
 | 
			
		||||
	golang.org/x/net v0.0.0-20210825183410-e898025ed96a
 | 
			
		||||
	golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e
 | 
			
		||||
	golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a
 | 
			
		||||
	gotest.tools v2.2.0+incompatible
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										41
									
								
								vendor/github.com/containers/storage/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										41
									
								
								vendor/github.com/containers/storage/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -57,8 +57,8 @@ github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2
 | 
			
		||||
github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00=
 | 
			
		||||
github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600=
 | 
			
		||||
github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4=
 | 
			
		||||
github.com/Microsoft/hcsshim v0.9.2 h1:wB06W5aYFfUB3IvootYAY2WnOmIdgPGfqSI6tufQNnY=
 | 
			
		||||
github.com/Microsoft/hcsshim v0.9.2/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc=
 | 
			
		||||
github.com/Microsoft/hcsshim v0.9.3 h1:k371PzBuRrz2b+ebGuI2nVgVhgsVX60jMfSw80NECxo=
 | 
			
		||||
github.com/Microsoft/hcsshim v0.9.3/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc=
 | 
			
		||||
github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU=
 | 
			
		||||
github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY=
 | 
			
		||||
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
 | 
			
		||||
@ -107,7 +107,7 @@ github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLI
 | 
			
		||||
github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs=
 | 
			
		||||
github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
 | 
			
		||||
github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
 | 
			
		||||
github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA=
 | 
			
		||||
github.com/cilium/ebpf v0.9.0/go.mod h1:+OhNOIXx/Fnu1IE8bJz2dzOA+VSfyTfdNUVdlQnxUFY=
 | 
			
		||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 | 
			
		||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
 | 
			
		||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
 | 
			
		||||
@ -266,6 +266,7 @@ github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi
 | 
			
		||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
 | 
			
		||||
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
 | 
			
		||||
github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
 | 
			
		||||
github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og=
 | 
			
		||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 | 
			
		||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
 | 
			
		||||
github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA=
 | 
			
		||||
@ -299,7 +300,7 @@ github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblf
 | 
			
		||||
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
 | 
			
		||||
github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 | 
			
		||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 | 
			
		||||
github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 | 
			
		||||
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 | 
			
		||||
github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU=
 | 
			
		||||
github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c=
 | 
			
		||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
 | 
			
		||||
@ -425,8 +426,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
 | 
			
		||||
github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
 | 
			
		||||
github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
 | 
			
		||||
github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
 | 
			
		||||
github.com/klauspost/compress v1.15.4 h1:1kn4/7MepF/CHmYub99/nNX8az0IJjfSOU/jbnTVfqQ=
 | 
			
		||||
github.com/klauspost/compress v1.15.4/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
 | 
			
		||||
github.com/klauspost/compress v1.15.6 h1:6D9PcO8QWu0JyaQ2zUMmu16T1T+zjjEpP91guRsvDfY=
 | 
			
		||||
github.com/klauspost/compress v1.15.6/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
 | 
			
		||||
github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE=
 | 
			
		||||
github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
 | 
			
		||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 | 
			
		||||
@ -436,6 +437,7 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB
 | 
			
		||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
			
		||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
			
		||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
			
		||||
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
 | 
			
		||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 | 
			
		||||
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
 | 
			
		||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 | 
			
		||||
@ -467,9 +469,8 @@ github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQ
 | 
			
		||||
github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
 | 
			
		||||
github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A=
 | 
			
		||||
github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A=
 | 
			
		||||
github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU=
 | 
			
		||||
github.com/moby/sys/mountinfo v0.6.1 h1:+H/KnGEAGRpTrEAqNVQ2AM3SiwMgJUt/TXj+Z8cmCIc=
 | 
			
		||||
github.com/moby/sys/mountinfo v0.6.1/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU=
 | 
			
		||||
github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78=
 | 
			
		||||
github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI=
 | 
			
		||||
github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ=
 | 
			
		||||
github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo=
 | 
			
		||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
			
		||||
@ -521,8 +522,8 @@ github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h
 | 
			
		||||
github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
 | 
			
		||||
github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0=
 | 
			
		||||
github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0=
 | 
			
		||||
github.com/opencontainers/runc v1.1.2 h1:2VSZwLx5k/BfsBxMMipG/LYUnmqOD/BPkIVgQUcTlLw=
 | 
			
		||||
github.com/opencontainers/runc v1.1.2/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc=
 | 
			
		||||
github.com/opencontainers/runc v1.1.1-0.20220607072441-a7a45d7d2721 h1:geG4wjkUPHyg+Ya/BBb8YlX1z4INWpVMdoUnmBxttqc=
 | 
			
		||||
github.com/opencontainers/runc v1.1.1-0.20220607072441-a7a45d7d2721/go.mod h1:QvA0UNe48mC1JxcXq0sENIR38+/LdJMLNxuAvtFBhxA=
 | 
			
		||||
github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
 | 
			
		||||
github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
 | 
			
		||||
github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
 | 
			
		||||
@ -534,7 +535,6 @@ github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mo
 | 
			
		||||
github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE=
 | 
			
		||||
github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo=
 | 
			
		||||
github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8=
 | 
			
		||||
github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI=
 | 
			
		||||
github.com/opencontainers/selinux v1.10.1 h1:09LIPVRP3uuZGQvgR+SgMSNBd1Eb3vlRbGqQpoHsF8w=
 | 
			
		||||
github.com/opencontainers/selinux v1.10.1/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI=
 | 
			
		||||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
 | 
			
		||||
@ -580,12 +580,13 @@ github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40T
 | 
			
		||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 | 
			
		||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
			
		||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 | 
			
		||||
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
 | 
			
		||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 | 
			
		||||
github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4=
 | 
			
		||||
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
 | 
			
		||||
github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U=
 | 
			
		||||
github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo=
 | 
			
		||||
github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg=
 | 
			
		||||
github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg=
 | 
			
		||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 | 
			
		||||
github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
 | 
			
		||||
github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
 | 
			
		||||
@ -624,8 +625,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
 | 
			
		||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 | 
			
		||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 | 
			
		||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
			
		||||
github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
 | 
			
		||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
			
		||||
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
 | 
			
		||||
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
 | 
			
		||||
github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
 | 
			
		||||
github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
 | 
			
		||||
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI=
 | 
			
		||||
@ -643,6 +644,7 @@ github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijb
 | 
			
		||||
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
 | 
			
		||||
github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
 | 
			
		||||
github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
 | 
			
		||||
github.com/urfave/cli v1.22.9/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
 | 
			
		||||
github.com/vbatts/tar-split v0.11.2 h1:Via6XqJr0hceW4wff3QRzD5gAk/tatMw/4ZA7cTlIME=
 | 
			
		||||
github.com/vbatts/tar-split v0.11.2/go.mod h1:vV3ZuO2yWSVsz+pfFzDG/upWH1JhjOiEaWq6kXyQ3VI=
 | 
			
		||||
github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
 | 
			
		||||
@ -848,10 +850,9 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w
 | 
			
		||||
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
			
		||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
 | 
			
		||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 | 
			
		||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
			
		||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
			
		||||
@ -990,6 +991,7 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
 | 
			
		||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
 | 
			
		||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 | 
			
		||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 | 
			
		||||
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
			
		||||
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
 | 
			
		||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 | 
			
		||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
			
		||||
@ -1018,8 +1020,9 @@ gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
			
		||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
			
		||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
			
		||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 | 
			
		||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
 | 
			
		||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
			
		||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
			
		||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
			
		||||
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
 | 
			
		||||
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
 | 
			
		||||
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										30
									
								
								vendor/github.com/containers/storage/pkg/archive/archive.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/github.com/containers/storage/pkg/archive/archive.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -12,6 +12,7 @@ import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"syscall"
 | 
			
		||||
@ -72,10 +73,10 @@ type (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	tarExt                  = "tar"
 | 
			
		||||
	solaris                 = "solaris"
 | 
			
		||||
	windows                 = "windows"
 | 
			
		||||
	containersOverrideXattr = "user.containers.override_stat"
 | 
			
		||||
	tarExt  = "tar"
 | 
			
		||||
	solaris = "solaris"
 | 
			
		||||
	windows = "windows"
 | 
			
		||||
	darwin  = "darwin"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var xattrsToIgnore = map[string]interface{}{
 | 
			
		||||
@ -698,9 +699,9 @@ func createTarFile(path, extractDir string, hdr *tar.Header, reader io.Reader, L
 | 
			
		||||
		return fmt.Errorf("unhandled tar header type %d", hdr.Typeflag)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if forceMask != nil && hdr.Typeflag != tar.TypeSymlink {
 | 
			
		||||
	if forceMask != nil && (hdr.Typeflag != tar.TypeSymlink || runtime.GOOS == "darwin") {
 | 
			
		||||
		value := fmt.Sprintf("%d:%d:0%o", hdr.Uid, hdr.Gid, hdrInfo.Mode()&07777)
 | 
			
		||||
		if err := system.Lsetxattr(path, containersOverrideXattr, []byte(value), 0); err != nil {
 | 
			
		||||
		if err := system.Lsetxattr(path, idtools.ContainersOverrideXattr, []byte(value), 0); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@ -981,7 +982,7 @@ func Unpack(decompressedArchive io.Reader, dest string, options *TarOptions) err
 | 
			
		||||
		uid, gid, mode, err := GetFileOwner(dest)
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			value := fmt.Sprintf("%d:%d:0%o", uid, gid, mode)
 | 
			
		||||
			if err := system.Lsetxattr(dest, containersOverrideXattr, []byte(value), 0); err != nil {
 | 
			
		||||
			if err := system.Lsetxattr(dest, idtools.ContainersOverrideXattr, []byte(value), 0); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
@ -1313,6 +1314,21 @@ func remapIDs(readIDMappings, writeIDMappings *idtools.IDMappings, chownOpts *id
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
		} else if runtime.GOOS == darwin {
 | 
			
		||||
			uid, gid = hdr.Uid, hdr.Gid
 | 
			
		||||
			if xstat, ok := hdr.Xattrs[idtools.ContainersOverrideXattr]; ok {
 | 
			
		||||
				attrs := strings.Split(string(xstat), ":")
 | 
			
		||||
				if len(attrs) == 3 {
 | 
			
		||||
					val, err := strconv.ParseUint(attrs[0], 10, 32)
 | 
			
		||||
					if err != nil {
 | 
			
		||||
						uid = int(val)
 | 
			
		||||
					}
 | 
			
		||||
					val, err = strconv.ParseUint(attrs[1], 10, 32)
 | 
			
		||||
					if err != nil {
 | 
			
		||||
						gid = int(val)
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			uid, gid = hdr.Uid, hdr.Gid
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										21
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/archive_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/archive_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
			
		||||
package chrootarchive
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"io"
 | 
			
		||||
 | 
			
		||||
	"github.com/containers/storage/pkg/archive"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func chroot(path string) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func invokeUnpack(decompressedArchive io.ReadCloser,
 | 
			
		||||
	dest string,
 | 
			
		||||
	options *archive.TarOptions, root string) error {
 | 
			
		||||
	return archive.Unpack(decompressedArchive, dest, options)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func invokePack(srcPath string, options *archive.TarOptions, root string) (io.ReadCloser, error) {
 | 
			
		||||
	return archive.TarWithOptions(srcPath, options)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/archive_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/archive_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -1,4 +1,4 @@
 | 
			
		||||
// +build !windows
 | 
			
		||||
// +build !windows,!darwin
 | 
			
		||||
 | 
			
		||||
package chrootarchive
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/chroot_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/chroot_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -1,4 +1,4 @@
 | 
			
		||||
// +build !windows,!linux
 | 
			
		||||
// +build !windows,!linux,!darwin
 | 
			
		||||
 | 
			
		||||
package chrootarchive
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										41
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/diff_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/diff_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
			
		||||
package chrootarchive
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
 | 
			
		||||
	"github.com/containers/storage/pkg/archive"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// applyLayerHandler parses a diff in the standard layer format from `layer`, and
 | 
			
		||||
// applies it to the directory `dest`. Returns the size in bytes of the
 | 
			
		||||
// contents of the layer.
 | 
			
		||||
func applyLayerHandler(dest string, layer io.Reader, options *archive.TarOptions, decompress bool) (size int64, err error) {
 | 
			
		||||
	dest = filepath.Clean(dest)
 | 
			
		||||
 | 
			
		||||
	if decompress {
 | 
			
		||||
		decompressed, err := archive.DecompressStream(layer)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		defer decompressed.Close()
 | 
			
		||||
 | 
			
		||||
		layer = decompressed
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tmpDir, err := ioutil.TempDir(os.Getenv("temp"), "temp-storage-extract")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, fmt.Errorf("ApplyLayer failed to create temp-storage-extract under %s. %s", dest, err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	s, err := archive.UnpackLayer(dest, layer, options)
 | 
			
		||||
	os.RemoveAll(tmpDir)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, fmt.Errorf("ApplyLayer %s failed UnpackLayer to %s: %s", layer, dest, err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return s, nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/diff_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/diff_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -1,4 +1,4 @@
 | 
			
		||||
//+build !windows
 | 
			
		||||
//+build !windows,!darwin
 | 
			
		||||
 | 
			
		||||
package chrootarchive
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/init_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/init_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
package chrootarchive
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/init_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containers/storage/pkg/chrootarchive/init_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -1,4 +1,4 @@
 | 
			
		||||
// +build !windows
 | 
			
		||||
// +build !windows,!darwin
 | 
			
		||||
 | 
			
		||||
package chrootarchive
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										105
									
								
								vendor/github.com/containers/storage/pkg/chunked/storage_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										105
									
								
								vendor/github.com/containers/storage/pkg/chunked/storage_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -272,14 +272,6 @@ func canDedupFileWithHardLink(file *internal.FileMetadata, fd int, s os.FileInfo
 | 
			
		||||
	return canDedupMetadataWithHardLink(file, &otherFile)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getFileDigest(f *os.File, buf []byte) (digest.Digest, error) {
 | 
			
		||||
	digester := digest.Canonical.Digester()
 | 
			
		||||
	if _, err := io.CopyBuffer(digester.Hash(), f, buf); err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
	return digester.Digest(), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// findFileInOSTreeRepos checks whether the requested file already exist in one of the OSTree repo and copies the file content from there if possible.
 | 
			
		||||
// file is the file to look for.
 | 
			
		||||
// ostreeRepos is a list of OSTree repos.
 | 
			
		||||
@ -330,75 +322,6 @@ func findFileInOSTreeRepos(file *internal.FileMetadata, ostreeRepos []string, di
 | 
			
		||||
	return false, nil, 0, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// findFileOnTheHost checks whether the requested file already exist on the host and copies the file content from there if possible.
 | 
			
		||||
// It is currently implemented to look only at the file with the same path.  Ideally it can detect the same content also at different
 | 
			
		||||
// paths.
 | 
			
		||||
// file is the file to look for.
 | 
			
		||||
// dirfd is an open fd to the destination checkout.
 | 
			
		||||
// useHardLinks defines whether the deduplication can be performed using hard links.
 | 
			
		||||
func findFileOnTheHost(file *internal.FileMetadata, dirfd int, useHardLinks bool, buf []byte) (bool, *os.File, int64, error) {
 | 
			
		||||
	sourceFile := filepath.Clean(filepath.Join("/", file.Name))
 | 
			
		||||
	if !strings.HasPrefix(sourceFile, "/usr/") {
 | 
			
		||||
		// limit host deduplication to files under /usr.
 | 
			
		||||
		return false, nil, 0, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	st, err := os.Stat(sourceFile)
 | 
			
		||||
	if err != nil || !st.Mode().IsRegular() {
 | 
			
		||||
		return false, nil, 0, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if st.Size() != file.Size {
 | 
			
		||||
		return false, nil, 0, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fd, err := unix.Open(sourceFile, unix.O_RDONLY|unix.O_NONBLOCK, 0)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return false, nil, 0, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	f := os.NewFile(uintptr(fd), "fd")
 | 
			
		||||
	defer f.Close()
 | 
			
		||||
 | 
			
		||||
	manifestChecksum, err := digest.Parse(file.Digest)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return false, nil, 0, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	checksum, err := getFileDigest(f, buf)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return false, nil, 0, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if checksum != manifestChecksum {
 | 
			
		||||
		return false, nil, 0, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// check if the open file can be deduplicated with hard links
 | 
			
		||||
	useHardLinks = useHardLinks && canDedupFileWithHardLink(file, fd, st)
 | 
			
		||||
 | 
			
		||||
	dstFile, written, err := copyFileContent(fd, file.Name, dirfd, 0, useHardLinks)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return false, nil, 0, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// calculate the checksum again to make sure the file wasn't modified while it was copied
 | 
			
		||||
	if _, err := f.Seek(0, 0); err != nil {
 | 
			
		||||
		dstFile.Close()
 | 
			
		||||
		return false, nil, 0, err
 | 
			
		||||
	}
 | 
			
		||||
	checksum, err = getFileDigest(f, buf)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		dstFile.Close()
 | 
			
		||||
		return false, nil, 0, err
 | 
			
		||||
	}
 | 
			
		||||
	if checksum != manifestChecksum {
 | 
			
		||||
		dstFile.Close()
 | 
			
		||||
		return false, nil, 0, nil
 | 
			
		||||
	}
 | 
			
		||||
	return true, dstFile, written, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// findFileInOtherLayers finds the specified file in other layers.
 | 
			
		||||
// cache is the layers cache to use.
 | 
			
		||||
// file is the file to look for.
 | 
			
		||||
@ -1297,10 +1220,9 @@ func parseBooleanPullOption(storeOpts *storage.StoreOptions, name string, def bo
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type findAndCopyFileOptions struct {
 | 
			
		||||
	useHardLinks    bool
 | 
			
		||||
	enableHostDedup bool
 | 
			
		||||
	ostreeRepos     []string
 | 
			
		||||
	options         *archive.TarOptions
 | 
			
		||||
	useHardLinks bool
 | 
			
		||||
	ostreeRepos  []string
 | 
			
		||||
	options      *archive.TarOptions
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *chunkedDiffer) findAndCopyFile(dirfd int, r *internal.FileMetadata, copyOptions *findAndCopyFileOptions, mode os.FileMode) (bool, error) {
 | 
			
		||||
@ -1336,18 +1258,6 @@ func (c *chunkedDiffer) findAndCopyFile(dirfd int, r *internal.FileMetadata, cop
 | 
			
		||||
		return true, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if copyOptions.enableHostDedup {
 | 
			
		||||
		found, dstFile, _, err = findFileOnTheHost(r, dirfd, copyOptions.useHardLinks, c.copyBuffer)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return false, err
 | 
			
		||||
		}
 | 
			
		||||
		if found {
 | 
			
		||||
			if err := finalizeFile(dstFile); err != nil {
 | 
			
		||||
				return false, err
 | 
			
		||||
			}
 | 
			
		||||
			return true, nil
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return false, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1376,8 +1286,6 @@ func (c *chunkedDiffer) ApplyDiff(dest string, options *archive.TarOptions) (gra
 | 
			
		||||
		return output, errors.New("enable_partial_images not configured")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	enableHostDedup := parseBooleanPullOption(&storeOpts, "enable_host_deduplication", false)
 | 
			
		||||
 | 
			
		||||
	// When the hard links deduplication is used, file attributes are ignored because setting them
 | 
			
		||||
	// modifies the source file as well.
 | 
			
		||||
	useHardLinks := parseBooleanPullOption(&storeOpts, "use_hard_links", false)
 | 
			
		||||
@ -1426,10 +1334,9 @@ func (c *chunkedDiffer) ApplyDiff(dest string, options *archive.TarOptions) (gra
 | 
			
		||||
	missingPartsSize, totalChunksSize := int64(0), int64(0)
 | 
			
		||||
 | 
			
		||||
	copyOptions := findAndCopyFileOptions{
 | 
			
		||||
		useHardLinks:    useHardLinks,
 | 
			
		||||
		enableHostDedup: enableHostDedup,
 | 
			
		||||
		ostreeRepos:     ostreeRepos,
 | 
			
		||||
		options:         options,
 | 
			
		||||
		useHardLinks: useHardLinks,
 | 
			
		||||
		ostreeRepos:  ostreeRepos,
 | 
			
		||||
		options:      options,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	type copyFileJob struct {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										44
									
								
								vendor/github.com/containers/storage/pkg/idtools/idtools.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										44
									
								
								vendor/github.com/containers/storage/pkg/idtools/idtools.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -6,6 +6,7 @@ import (
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/user"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"sort"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
@ -38,8 +39,9 @@ func (e ranges) Swap(i, j int)      { e[i], e[j] = e[j], e[i] }
 | 
			
		||||
func (e ranges) Less(i, j int) bool { return e[i].Start < e[j].Start }
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	subuidFileName string = "/etc/subuid"
 | 
			
		||||
	subgidFileName string = "/etc/subgid"
 | 
			
		||||
	subuidFileName          string = "/etc/subuid"
 | 
			
		||||
	subgidFileName          string = "/etc/subgid"
 | 
			
		||||
	ContainersOverrideXattr        = "user.containers.override_stat"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// MkdirAllAs creates a directory (include any along the path) and then modifies
 | 
			
		||||
@ -366,6 +368,25 @@ func checkChownErr(err error, name string, uid, gid int) error {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func SafeChown(name string, uid, gid int) error {
 | 
			
		||||
	if runtime.GOOS == "darwin" {
 | 
			
		||||
		var mode uint64 = 0o0700
 | 
			
		||||
		xstat, err := system.Lgetxattr(name, ContainersOverrideXattr)
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			attrs := strings.Split(string(xstat), ":")
 | 
			
		||||
			if len(attrs) == 3 {
 | 
			
		||||
				val, err := strconv.ParseUint(attrs[2], 8, 32)
 | 
			
		||||
				if err == nil {
 | 
			
		||||
					mode = val
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		value := fmt.Sprintf("%d:%d:0%o", uid, gid, mode)
 | 
			
		||||
		if err = system.Lsetxattr(name, ContainersOverrideXattr, []byte(value), 0); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		uid = os.Getuid()
 | 
			
		||||
		gid = os.Getgid()
 | 
			
		||||
	}
 | 
			
		||||
	if stat, statErr := system.Stat(name); statErr == nil {
 | 
			
		||||
		if stat.UID() == uint32(uid) && stat.GID() == uint32(gid) {
 | 
			
		||||
			return nil
 | 
			
		||||
@ -375,6 +396,25 @@ func SafeChown(name string, uid, gid int) error {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func SafeLchown(name string, uid, gid int) error {
 | 
			
		||||
	if runtime.GOOS == "darwin" {
 | 
			
		||||
		var mode uint64 = 0o0700
 | 
			
		||||
		xstat, err := system.Lgetxattr(name, ContainersOverrideXattr)
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			attrs := strings.Split(string(xstat), ":")
 | 
			
		||||
			if len(attrs) == 3 {
 | 
			
		||||
				val, err := strconv.ParseUint(attrs[2], 8, 32)
 | 
			
		||||
				if err == nil {
 | 
			
		||||
					mode = val
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		value := fmt.Sprintf("%d:%d:0%o", uid, gid, mode)
 | 
			
		||||
		if err = system.Lsetxattr(name, ContainersOverrideXattr, []byte(value), 0); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		uid = os.Getuid()
 | 
			
		||||
		gid = os.Getgid()
 | 
			
		||||
	}
 | 
			
		||||
	if stat, statErr := system.Lstat(name); statErr == nil {
 | 
			
		||||
		if stat.UID() == uint32(uid) && stat.GID() == uint32(gid) {
 | 
			
		||||
			return nil
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										84
									
								
								vendor/github.com/containers/storage/pkg/system/xattrs_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								vendor/github.com/containers/storage/pkg/system/xattrs_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,84 @@
 | 
			
		||||
package system
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/sys/unix"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	// Value is larger than the maximum size allowed
 | 
			
		||||
	E2BIG unix.Errno = unix.E2BIG
 | 
			
		||||
 | 
			
		||||
	// Operation not supported
 | 
			
		||||
	EOPNOTSUPP unix.Errno = unix.EOPNOTSUPP
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Lgetxattr retrieves the value of the extended attribute identified by attr
 | 
			
		||||
// and associated with the given path in the file system.
 | 
			
		||||
// Returns a []byte slice if the xattr is set and nil otherwise.
 | 
			
		||||
func Lgetxattr(path string, attr string) ([]byte, error) {
 | 
			
		||||
	// Start with a 128 length byte array
 | 
			
		||||
	dest := make([]byte, 128)
 | 
			
		||||
	sz, errno := unix.Lgetxattr(path, attr, dest)
 | 
			
		||||
 | 
			
		||||
	for errno == unix.ERANGE {
 | 
			
		||||
		// Buffer too small, use zero-sized buffer to get the actual size
 | 
			
		||||
		sz, errno = unix.Lgetxattr(path, attr, []byte{})
 | 
			
		||||
		if errno != nil {
 | 
			
		||||
			return nil, &os.PathError{Op: "lgetxattr", Path: path, Err: errno}
 | 
			
		||||
		}
 | 
			
		||||
		dest = make([]byte, sz)
 | 
			
		||||
		sz, errno = unix.Lgetxattr(path, attr, dest)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch {
 | 
			
		||||
	case errno == unix.ENOATTR:
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	case errno != nil:
 | 
			
		||||
		return nil, &os.PathError{Op: "lgetxattr", Path: path, Err: errno}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return dest[:sz], nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Lsetxattr sets the value of the extended attribute identified by attr
 | 
			
		||||
// and associated with the given path in the file system.
 | 
			
		||||
func Lsetxattr(path string, attr string, data []byte, flags int) error {
 | 
			
		||||
	if err := unix.Lsetxattr(path, attr, data, flags); err != nil {
 | 
			
		||||
		return &os.PathError{Op: "lsetxattr", Path: path, Err: err}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Llistxattr lists extended attributes associated with the given path
 | 
			
		||||
// in the file system.
 | 
			
		||||
func Llistxattr(path string) ([]string, error) {
 | 
			
		||||
	dest := make([]byte, 128)
 | 
			
		||||
	sz, errno := unix.Llistxattr(path, dest)
 | 
			
		||||
 | 
			
		||||
	for errno == unix.ERANGE {
 | 
			
		||||
		// Buffer too small, use zero-sized buffer to get the actual size
 | 
			
		||||
		sz, errno = unix.Llistxattr(path, []byte{})
 | 
			
		||||
		if errno != nil {
 | 
			
		||||
			return nil, &os.PathError{Op: "llistxattr", Path: path, Err: errno}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		dest = make([]byte, sz)
 | 
			
		||||
		sz, errno = unix.Llistxattr(path, dest)
 | 
			
		||||
	}
 | 
			
		||||
	if errno != nil {
 | 
			
		||||
		return nil, &os.PathError{Op: "llistxattr", Path: path, Err: errno}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var attrs []string
 | 
			
		||||
	for _, token := range bytes.Split(dest[:sz], []byte{0}) {
 | 
			
		||||
		if len(token) > 0 {
 | 
			
		||||
			attrs = append(attrs, string(token))
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return attrs, nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/containers/storage/pkg/system/xattrs_unsupported.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containers/storage/pkg/system/xattrs_unsupported.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -1,4 +1,4 @@
 | 
			
		||||
// +build !linux
 | 
			
		||||
// +build !linux,!darwin
 | 
			
		||||
 | 
			
		||||
package system
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										53
									
								
								vendor/github.com/containers/storage/pkg/unshare/unshare_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								vendor/github.com/containers/storage/pkg/unshare/unshare_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,53 @@
 | 
			
		||||
// +build darwin
 | 
			
		||||
 | 
			
		||||
package unshare
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"github.com/containers/storage/pkg/idtools"
 | 
			
		||||
	"github.com/opencontainers/runtime-spec/specs-go"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	// UsernsEnvName is the environment variable, if set indicates in rootless mode
 | 
			
		||||
	UsernsEnvName = "_CONTAINERS_USERNS_CONFIGURED"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// IsRootless tells us if we are running in rootless mode
 | 
			
		||||
func IsRootless() bool {
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetRootlessUID returns the UID of the user in the parent userNS
 | 
			
		||||
func GetRootlessUID() int {
 | 
			
		||||
	return os.Getuid()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RootlessEnv returns the environment settings for the rootless containers
 | 
			
		||||
func RootlessEnv() []string {
 | 
			
		||||
	return append(os.Environ(), UsernsEnvName+"=")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MaybeReexecUsingUserNamespace re-exec the process in a new namespace
 | 
			
		||||
func MaybeReexecUsingUserNamespace(evenForRoot bool) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetHostIDMappings reads mappings for the specified process (or the current
 | 
			
		||||
// process if pid is "self" or an empty string) from the kernel.
 | 
			
		||||
func GetHostIDMappings(pid string) ([]specs.LinuxIDMapping, []specs.LinuxIDMapping, error) {
 | 
			
		||||
	return nil, nil, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ParseIDMappings parses mapping triples.
 | 
			
		||||
func ParseIDMappings(uidmap, gidmap []string) ([]idtools.IDMap, []idtools.IDMap, error) {
 | 
			
		||||
	uid, err := idtools.ParseIDMap(uidmap, "userns-uid-map")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, nil, err
 | 
			
		||||
	}
 | 
			
		||||
	gid, err := idtools.ParseIDMap(gidmap, "userns-gid-map")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return uid, gid, nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/containers/storage/pkg/unshare/unshare_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containers/storage/pkg/unshare/unshare_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -78,7 +78,7 @@ func getRootlessGID() int {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsSetID checks if specified path has correct FileMode (Setuid|SETGID) or the
 | 
			
		||||
// matching file capabilitiy
 | 
			
		||||
// matching file capability
 | 
			
		||||
func IsSetID(path string, modeid os.FileMode, capid capability.Cap) (bool, error) {
 | 
			
		||||
	info, err := os.Stat(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								vendor/github.com/containers/storage/pkg/unshare/unshare_unsupported.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/containers/storage/pkg/unshare/unshare_unsupported.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -1,5 +1,5 @@
 | 
			
		||||
//go:build !linux
 | 
			
		||||
// +build !linux
 | 
			
		||||
//go:build !linux && !darwin
 | 
			
		||||
// +build !linux,!darwin
 | 
			
		||||
 | 
			
		||||
package unshare
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								vendor/github.com/containers/storage/storage.conf
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/containers/storage/storage.conf
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -40,6 +40,28 @@ graphroot = "/var/lib/containers/storage"
 | 
			
		||||
additionalimagestores = [
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
# Allows specification of how storage is populated when pulling images. This
 | 
			
		||||
# option can speed the pulling process of images compressed with format
 | 
			
		||||
# zstd:chunked. Containers/storage looks for files within images that are being
 | 
			
		||||
# pulled from a container registry that were previously pulled to the host.  It
 | 
			
		||||
# can copy or create a hard link to the existing file when it finds them,
 | 
			
		||||
# eliminating the need to pull them from the container registry. These options
 | 
			
		||||
# can deduplicate pulling of content, disk storage of content and can allow the
 | 
			
		||||
# kernel to use less memory when running containers.
 | 
			
		||||
 | 
			
		||||
# containers/storage supports four keys
 | 
			
		||||
#   * enable_partial_images="true" | "false"
 | 
			
		||||
#     Tells containers/storage to look for files previously pulled in storage
 | 
			
		||||
#     rather then always pulling them from the container registry.
 | 
			
		||||
#   * use_hard_links = "false" | "true"
 | 
			
		||||
#     Tells containers/storage to use hard links rather then create new files in
 | 
			
		||||
#     the image, if an identical file already existed in storage.
 | 
			
		||||
#   * ostree_repos = ""
 | 
			
		||||
#     Tells containers/storage where an ostree repository exists that might have
 | 
			
		||||
#     previously pulled content which can be used when attempting to avoid
 | 
			
		||||
#     pulling content from the container registry
 | 
			
		||||
pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""}
 | 
			
		||||
 | 
			
		||||
# Remap-UIDs/GIDs is the mapping from UIDs/GIDs as they should appear inside of
 | 
			
		||||
# a container, to the UIDs/GIDs as they should appear outside of the container,
 | 
			
		||||
# and the length of the range of UIDs/GIDs.  Additional mapped sets can be
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										17
									
								
								vendor/github.com/containers/storage/types/options.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								vendor/github.com/containers/storage/types/options.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -26,15 +26,24 @@ type TomlConfig struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	overlayDriver = "overlay"
 | 
			
		||||
	overlay2      = "overlay2"
 | 
			
		||||
	overlayDriver  = "overlay"
 | 
			
		||||
	overlay2       = "overlay2"
 | 
			
		||||
	storageConfEnv = "CONTAINERS_STORAGE_CONF"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
var (
 | 
			
		||||
	defaultStoreOptionsOnce sync.Once
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func loaddefaultStoreOptions() {
 | 
			
		||||
	defaultStoreOptions.RunRoot = defaultRunRoot
 | 
			
		||||
	defaultStoreOptions.GraphRoot = defaultGraphRoot
 | 
			
		||||
	defaultStoreOptions.GraphDriverName = ""
 | 
			
		||||
 | 
			
		||||
	if path, ok := os.LookupEnv(storageConfEnv); ok {
 | 
			
		||||
		defaultOverrideConfigFile = path
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if _, err := os.Stat(defaultOverrideConfigFile); err == nil {
 | 
			
		||||
		// The DefaultConfigFile(rootless) function returns the path
 | 
			
		||||
		// of the used storage.conf file, by returning defaultConfigFile
 | 
			
		||||
@ -64,6 +73,7 @@ func defaultStoreOptionsIsolated(rootless bool, rootlessUID int, storageConf str
 | 
			
		||||
		defaultRootlessGraphRoot string
 | 
			
		||||
		err                      error
 | 
			
		||||
	)
 | 
			
		||||
	defaultStoreOptionsOnce.Do(loaddefaultStoreOptions)
 | 
			
		||||
	storageOpts := defaultStoreOptions
 | 
			
		||||
	if rootless && rootlessUID != 0 {
 | 
			
		||||
		storageOpts, err = getRootlessStorageOpts(rootlessUID, storageOpts)
 | 
			
		||||
@ -391,6 +401,7 @@ func ReloadConfigurationFile(configFile string, storeOptions *StoreOptions) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Options() StoreOptions {
 | 
			
		||||
	defaultStoreOptionsOnce.Do(loaddefaultStoreOptions)
 | 
			
		||||
	return defaultStoreOptions
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/containers/storage/types/utils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containers/storage/types/utils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -170,7 +170,7 @@ func DefaultConfigFile(rootless bool) (string, error) {
 | 
			
		||||
		return defaultConfigFile, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if path, ok := os.LookupEnv("CONTAINERS_STORAGE_CONF"); ok {
 | 
			
		||||
	if path, ok := os.LookupEnv(storageConfEnv); ok {
 | 
			
		||||
		return path, nil
 | 
			
		||||
	}
 | 
			
		||||
	if !rootless {
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user