Bump github.com/containers/common from 0.36.0 to 0.37.0

Bumps [github.com/containers/common](https://github.com/containers/common) from 0.36.0 to 0.37.0.
- [Release notes](https://github.com/containers/common/releases)
- [Commits](https://github.com/containers/common/compare/v0.36.0...v0.37.0)

Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
dependabot[bot] 2021-04-22 07:59:24 +00:00 committed by GitHub
parent 979f047d73
commit 8ebafbde34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 74 additions and 66 deletions

2
go.mod
View File

@ -11,7 +11,7 @@ require (
github.com/containernetworking/cni v0.8.1 github.com/containernetworking/cni v0.8.1
github.com/containernetworking/plugins v0.9.1 github.com/containernetworking/plugins v0.9.1
github.com/containers/buildah v1.20.1-0.20210402144408-36a37402d0c8 github.com/containers/buildah v1.20.1-0.20210402144408-36a37402d0c8
github.com/containers/common v0.36.0 github.com/containers/common v0.37.0
github.com/containers/conmon v2.0.20+incompatible github.com/containers/conmon v2.0.20+incompatible
github.com/containers/image/v5 v5.11.1 github.com/containers/image/v5 v5.11.1
github.com/containers/ocicrypt v1.1.1 github.com/containers/ocicrypt v1.1.1

5
go.sum
View File

@ -193,8 +193,8 @@ github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRD
github.com/containers/buildah v1.20.1-0.20210402144408-36a37402d0c8 h1:RlqbDlfE3+qrq4bNTZG7NVPqCDzfZrgE/yicu0VAykQ= github.com/containers/buildah v1.20.1-0.20210402144408-36a37402d0c8 h1:RlqbDlfE3+qrq4bNTZG7NVPqCDzfZrgE/yicu0VAykQ=
github.com/containers/buildah v1.20.1-0.20210402144408-36a37402d0c8/go.mod h1:iowyscoAC5jwNDhs3c5CLGdBZ9FJk5UOoN2I5TdmXFs= github.com/containers/buildah v1.20.1-0.20210402144408-36a37402d0c8/go.mod h1:iowyscoAC5jwNDhs3c5CLGdBZ9FJk5UOoN2I5TdmXFs=
github.com/containers/common v0.35.4/go.mod h1:rMzxgD7nMGw++cEbsp+NZv0UJO4rgXbm7F7IbJPTwIE= github.com/containers/common v0.35.4/go.mod h1:rMzxgD7nMGw++cEbsp+NZv0UJO4rgXbm7F7IbJPTwIE=
github.com/containers/common v0.36.0 h1:7/0GM3oi2ROmKAg/8pDWJ8BU2BXdbmy7Gk2/SFCTV38= github.com/containers/common v0.37.0 h1:RRyR8FITTJXfrF7J9KXKSplywY4zsXoA2kuQXMaUaNo=
github.com/containers/common v0.36.0/go.mod h1:rMzxgD7nMGw++cEbsp+NZv0UJO4rgXbm7F7IbJPTwIE= github.com/containers/common v0.37.0/go.mod h1:dgbJcccCPTmncqxhma56+XW+6d5VzqGF6jtkMHyu3v0=
github.com/containers/conmon v2.0.20+incompatible h1:YbCVSFSCqFjjVwHTPINGdMX1F6JXHGTUje2ZYobNrkg= github.com/containers/conmon v2.0.20+incompatible h1:YbCVSFSCqFjjVwHTPINGdMX1F6JXHGTUje2ZYobNrkg=
github.com/containers/conmon v2.0.20+incompatible/go.mod h1:hgwZ2mtuDrppv78a/cOBNiCm6O0UMWGx1mu7P00nu5I= github.com/containers/conmon v2.0.20+incompatible/go.mod h1:hgwZ2mtuDrppv78a/cOBNiCm6O0UMWGx1mu7P00nu5I=
github.com/containers/image/v5 v5.10.5/go.mod h1:SgIbWEedCNBbn2FI5cH0/jed1Ecy2s8XK5zTxvJTzII= github.com/containers/image/v5 v5.10.5/go.mod h1:SgIbWEedCNBbn2FI5cH0/jed1Ecy2s8XK5zTxvJTzII=
@ -213,6 +213,7 @@ github.com/containers/storage v1.23.5/go.mod h1:ha26Q6ngehFNhf3AWoXldvAvwI4jFe3E
github.com/containers/storage v1.24.8/go.mod h1:YC+2pY8SkfEAcZkwycxYbpK8EiRbx5soPPwz9dxe4IQ= github.com/containers/storage v1.24.8/go.mod h1:YC+2pY8SkfEAcZkwycxYbpK8EiRbx5soPPwz9dxe4IQ=
github.com/containers/storage v1.28.0/go.mod h1:ixAwO7Bj31cigqPEG7aCz+PYmxkDxbIFdUFioYdxbzI= github.com/containers/storage v1.28.0/go.mod h1:ixAwO7Bj31cigqPEG7aCz+PYmxkDxbIFdUFioYdxbzI=
github.com/containers/storage v1.28.1/go.mod h1:5bwiMh2LkrN3AWIfDFMH7A/xbVNLcve+oeXYvHvW8cc= github.com/containers/storage v1.28.1/go.mod h1:5bwiMh2LkrN3AWIfDFMH7A/xbVNLcve+oeXYvHvW8cc=
github.com/containers/storage v1.29.0/go.mod h1:u84RU4CCufGeJBNTRNwMB+FoE+AiFeFw4SsMoqAOeCM=
github.com/containers/storage v1.30.0 h1:KS6zmoPyy0Qcx1HCCiseQ0ysSckRvtiuoVpIGh9iwQA= github.com/containers/storage v1.30.0 h1:KS6zmoPyy0Qcx1HCCiseQ0ysSckRvtiuoVpIGh9iwQA=
github.com/containers/storage v1.30.0/go.mod h1:M/xn0pg6ReYFrLtWl5YELI/a4Xjq+Z3e5GJxQrJCcDI= github.com/containers/storage v1.30.0/go.mod h1:M/xn0pg6ReYFrLtWl5YELI/a4Xjq+Z3e5GJxQrJCcDI=
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=

View File

@ -5,6 +5,7 @@ import (
"context" "context"
"fmt" "fmt"
"os" "os"
"path/filepath"
"strings" "strings"
"github.com/containers/image/v5/docker" "github.com/containers/image/v5/docker"
@ -13,19 +14,21 @@ import (
"github.com/containers/image/v5/types" "github.com/containers/image/v5/types"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"golang.org/x/crypto/ssh/terminal" terminal "golang.org/x/term"
) )
// GetDefaultAuthFile returns env value REGISTRY_AUTH_FILE as default // GetDefaultAuthFile returns env value REGISTRY_AUTH_FILE as default
// --authfile path used in multiple --authfile flag definitions // --authfile path used in multiple --authfile flag definitions
// Will fail over to DOCKER_CONFIG if REGISTRY_AUTH_FILE environment is not set // Will fail over to DOCKER_CONFIG if REGISTRY_AUTH_FILE environment is not set
func GetDefaultAuthFile() string { func GetDefaultAuthFile() string {
authfile := os.Getenv("REGISTRY_AUTH_FILE") if authfile := os.Getenv("REGISTRY_AUTH_FILE"); authfile != "" {
if authfile == "" {
authfile = os.Getenv("DOCKER_CONFIG")
}
return authfile return authfile
} }
if auth_env := os.Getenv("DOCKER_CONFIG"); auth_env != "" {
return filepath.Join(auth_env, "config.json")
}
return ""
}
// CheckAuthFile validates filepath given by --authfile // CheckAuthFile validates filepath given by --authfile
// used by command has --authfile flag // used by command has --authfile flag
@ -34,7 +37,7 @@ func CheckAuthFile(authfile string) error {
return nil return nil
} }
if _, err := os.Stat(authfile); err != nil { if _, err := os.Stat(authfile); err != nil {
return errors.Wrapf(err, "error checking authfile path %s", authfile) return errors.Wrap(err, "checking authfile")
} }
return nil return nil
} }
@ -70,11 +73,11 @@ func Login(ctx context.Context, systemContext *types.SystemContext, opts *LoginO
err error err error
) )
if len(args) > 1 { if len(args) > 1 {
return errors.Errorf("login accepts only one registry to login to") return errors.New("login accepts only one registry to login to")
} }
if len(args) == 0 { if len(args) == 0 {
if !opts.AcceptUnspecifiedRegistry { if !opts.AcceptUnspecifiedRegistry {
return errors.Errorf("please provide a registry to login to") return errors.New("please provide a registry to login to")
} }
if server, err = defaultRegistryWhenUnspecified(systemContext); err != nil { if server, err = defaultRegistryWhenUnspecified(systemContext); err != nil {
return err return err
@ -85,7 +88,7 @@ func Login(ctx context.Context, systemContext *types.SystemContext, opts *LoginO
} }
authConfig, err := config.GetCredentials(systemContext, server) authConfig, err := config.GetCredentials(systemContext, server)
if err != nil { if err != nil {
return errors.Wrapf(err, "error reading auth file") return errors.Wrap(err, "reading auth file")
} }
if opts.GetLoginSet { if opts.GetLoginSet {
if authConfig.Username == "" { if authConfig.Username == "" {
@ -95,17 +98,17 @@ func Login(ctx context.Context, systemContext *types.SystemContext, opts *LoginO
return nil return nil
} }
if authConfig.IdentityToken != "" { if authConfig.IdentityToken != "" {
return errors.Errorf("currently logged in, auth file contains an Identity token") return errors.New("currently logged in, auth file contains an Identity token")
} }
password := opts.Password password := opts.Password
if opts.StdinPassword { if opts.StdinPassword {
var stdinPasswordStrBuilder strings.Builder var stdinPasswordStrBuilder strings.Builder
if opts.Password != "" { if opts.Password != "" {
return errors.Errorf("Can't specify both --password-stdin and --password") return errors.New("Can't specify both --password-stdin and --password")
} }
if opts.Username == "" { if opts.Username == "" {
return errors.Errorf("Must provide --username with --password-stdin") return errors.New("Must provide --username with --password-stdin")
} }
scanner := bufio.NewScanner(opts.Stdin) scanner := bufio.NewScanner(opts.Stdin)
for scanner.Scan() { for scanner.Scan() {
@ -126,7 +129,7 @@ func Login(ctx context.Context, systemContext *types.SystemContext, opts *LoginO
username, password, err := getUserAndPass(opts, password, authConfig.Username) username, password, err := getUserAndPass(opts, password, authConfig.Username)
if err != nil { if err != nil {
return errors.Wrapf(err, "error getting username and password") return errors.Wrap(err, "getting username and password")
} }
if err = docker.CheckAuth(ctx, systemContext, username, password, server); err == nil { if err = docker.CheckAuth(ctx, systemContext, username, password, server); err == nil {
@ -143,7 +146,7 @@ func Login(ctx context.Context, systemContext *types.SystemContext, opts *LoginO
logrus.Debugf("error logging into %q: %v", server, unauthorized) logrus.Debugf("error logging into %q: %v", server, unauthorized)
return errors.Errorf("error logging into %q: invalid username/password", server) return errors.Errorf("error logging into %q: invalid username/password", server)
} }
return errors.Wrapf(err, "error authenticating creds for %q", server) return errors.Wrapf(err, "authenticating creds for %q", server)
} }
// getRegistryName scrubs and parses the input to get the server name // getRegistryName scrubs and parses the input to get the server name
@ -172,7 +175,7 @@ func getUserAndPass(opts *LoginOptions, password, userFromAuthFile string) (user
} }
username, err = reader.ReadString('\n') username, err = reader.ReadString('\n')
if err != nil { if err != nil {
return "", "", errors.Wrapf(err, "error reading username") return "", "", errors.Wrap(err, "reading username")
} }
// If the user just hit enter, use the displayed user from the // If the user just hit enter, use the displayed user from the
// the authentication file. This allows to do a lazy // the authentication file. This allows to do a lazy
@ -186,7 +189,7 @@ func getUserAndPass(opts *LoginOptions, password, userFromAuthFile string) (user
fmt.Fprint(opts.Stdout, "Password: ") fmt.Fprint(opts.Stdout, "Password: ")
pass, err := terminal.ReadPassword(0) pass, err := terminal.ReadPassword(0)
if err != nil { if err != nil {
return "", "", errors.Wrapf(err, "error reading password") return "", "", errors.Wrap(err, "reading password")
} }
password = string(pass) password = string(pass)
fmt.Fprintln(opts.Stdout) fmt.Fprintln(opts.Stdout)
@ -206,11 +209,11 @@ func Logout(systemContext *types.SystemContext, opts *LogoutOptions, args []stri
err error err error
) )
if len(args) > 1 { if len(args) > 1 {
return errors.Errorf("logout accepts only one registry to logout from") return errors.New("logout accepts only one registry to logout from")
} }
if len(args) == 0 && !opts.All { if len(args) == 0 && !opts.All {
if !opts.AcceptUnspecifiedRegistry { if !opts.AcceptUnspecifiedRegistry {
return errors.Errorf("please provide a registry to logout from") return errors.New("please provide a registry to logout from")
} }
if server, err = defaultRegistryWhenUnspecified(systemContext); err != nil { if server, err = defaultRegistryWhenUnspecified(systemContext); err != nil {
return err return err
@ -219,7 +222,7 @@ func Logout(systemContext *types.SystemContext, opts *LogoutOptions, args []stri
} }
if len(args) != 0 { if len(args) != 0 {
if opts.All { if opts.All {
return errors.Errorf("--all takes no arguments") return errors.New("--all takes no arguments")
} }
server = getRegistryName(args[0]) server = getRegistryName(args[0])
} }
@ -240,7 +243,7 @@ func Logout(systemContext *types.SystemContext, opts *LogoutOptions, args []stri
case config.ErrNotLoggedIn: case config.ErrNotLoggedIn:
authConfig, err := config.GetCredentials(systemContext, server) authConfig, err := config.GetCredentials(systemContext, server)
if err != nil { if err != nil {
return errors.Wrapf(err, "error reading auth file") return errors.Wrap(err, "reading auth file")
} }
authInvalid := docker.CheckAuth(context.Background(), systemContext, authConfig.Username, authConfig.Password, server) authInvalid := docker.CheckAuth(context.Background(), systemContext, authConfig.Username, authConfig.Password, server)
if authConfig.Username != "" && authConfig.Password != "" && authInvalid == nil { if authConfig.Username != "" && authConfig.Password != "" && authInvalid == nil {
@ -249,7 +252,7 @@ func Logout(systemContext *types.SystemContext, opts *LogoutOptions, args []stri
} }
return errors.Errorf("Not logged into %s\n", server) return errors.Errorf("Not logged into %s\n", server)
default: default:
return errors.Wrapf(err, "error logging out of %q", server) return errors.Wrapf(err, "logging out of %q", server)
} }
} }
@ -258,10 +261,10 @@ func Logout(systemContext *types.SystemContext, opts *LogoutOptions, args []stri
func defaultRegistryWhenUnspecified(systemContext *types.SystemContext) (string, error) { func defaultRegistryWhenUnspecified(systemContext *types.SystemContext) (string, error) {
registriesFromFile, err := sysregistriesv2.UnqualifiedSearchRegistries(systemContext) registriesFromFile, err := sysregistriesv2.UnqualifiedSearchRegistries(systemContext)
if err != nil { if err != nil {
return "", errors.Wrapf(err, "error getting registry from registry.conf, please specify a registry") return "", errors.Wrap(err, "getting registry from registry.conf, please specify a registry")
} }
if len(registriesFromFile) == 0 { if len(registriesFromFile) == 0 {
return "", errors.Errorf("no registries found in registries.conf, a registry must be provided") return "", errors.New("no registries found in registries.conf, a registry must be provided")
} }
return registriesFromFile[0], nil return registriesFromFile[0], nil
} }

View File

@ -16,7 +16,7 @@ func ChangeHostPathOwnership(path string, recursive bool, uid, gid int) error {
// Validate if host path can be chowned // Validate if host path can be chowned
isDangerous, err := DangerousHostPath(path) isDangerous, err := DangerousHostPath(path)
if err != nil { if err != nil {
return errors.Wrapf(err, "failed to validate if host path is dangerous") return errors.Wrap(err, "failed to validate if host path is dangerous")
} }
if isDangerous { if isDangerous {
@ -42,13 +42,13 @@ func ChangeHostPathOwnership(path string, recursive bool, uid, gid int) error {
}) })
if err != nil { if err != nil {
return errors.Wrapf(err, "failed to chown recursively host path") return errors.Wrap(err, "failed to chown recursively host path")
} }
} else { } else {
// Get host path info // Get host path info
f, err := os.Lstat(path) f, err := os.Lstat(path)
if err != nil { if err != nil {
return errors.Wrapf(err, "failed to get host path information") return errors.Wrap(err, "failed to get host path information")
} }
// Get current ownership // Get current ownership
@ -57,7 +57,7 @@ func ChangeHostPathOwnership(path string, recursive bool, uid, gid int) error {
if uid != currentUID || gid != currentGID { if uid != currentUID || gid != currentGID {
if err := os.Lchown(path, uid, gid); err != nil { if err := os.Lchown(path, uid, gid); err != nil {
return errors.Wrapf(err, "failed to chown host path") return errors.Wrap(err, "failed to chown host path")
} }
} }
} }

View File

@ -7,5 +7,5 @@ import (
// ChangeHostPathOwnership changes the uid and gid ownership of a directory or file within the host. // ChangeHostPathOwnership changes the uid and gid ownership of a directory or file within the host.
// This is used by the volume U flag to change source volumes ownership // This is used by the volume U flag to change source volumes ownership
func ChangeHostPathOwnership(path string, recursive bool, uid, gid int) error { func ChangeHostPathOwnership(path string, recursive bool, uid, gid int) error {
return errors.Errorf("windows not supported") return errors.New("windows not supported")
} }

View File

@ -465,16 +465,17 @@ func NewConfig(userConfigPath string) (*Config, error) {
// Now, gather the system configs and merge them as needed. // Now, gather the system configs and merge them as needed.
configs, err := systemConfigs() configs, err := systemConfigs()
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "error finding config on system") return nil, errors.Wrap(err, "finding config on system")
} }
for _, path := range configs { for _, path := range configs {
// Merge changes in later configs with the previous configs. // Merge changes in later configs with the previous configs.
// Each config file that specified fields, will override the // Each config file that specified fields, will override the
// previous fields. // previous fields.
if err = readConfigFromFile(path, config); err != nil { if err = readConfigFromFile(path, config); err != nil {
return nil, errors.Wrapf(err, "error reading system config %q", path) return nil, errors.Wrapf(err, "reading system config %q", path)
} }
logrus.Debugf("Merged system config %q: %+v", path, config) logrus.Debugf("Merged system config %q", path)
logrus.Tracef("%+v", config)
} }
// If the caller specified a config path to use, then we read it to // If the caller specified a config path to use, then we read it to
@ -484,9 +485,10 @@ func NewConfig(userConfigPath string) (*Config, error) {
// readConfigFromFile reads in container config in the specified // readConfigFromFile reads in container config in the specified
// file and then merge changes with the current default. // file and then merge changes with the current default.
if err = readConfigFromFile(userConfigPath, config); err != nil { if err = readConfigFromFile(userConfigPath, config); err != nil {
return nil, errors.Wrapf(err, "error reading user config %q", userConfigPath) return nil, errors.Wrapf(err, "reading user config %q", userConfigPath)
} }
logrus.Debugf("Merged user config %q: %+v", userConfigPath, config) logrus.Debugf("Merged user config %q", userConfigPath)
logrus.Tracef("%+v", config)
} }
config.addCAPPrefix() config.addCAPPrefix()
@ -502,9 +504,9 @@ func NewConfig(userConfigPath string) (*Config, error) {
// default config. If the path, only specifies a few fields in the Toml file // default config. If the path, only specifies a few fields in the Toml file
// the defaults from the config parameter will be used for all other fields. // the defaults from the config parameter will be used for all other fields.
func readConfigFromFile(path string, config *Config) error { func readConfigFromFile(path string, config *Config) error {
logrus.Debugf("Reading configuration file %q", path) logrus.Tracef("Reading configuration file %q", path)
if _, err := toml.DecodeFile(path, config); err != nil { if _, err := toml.DecodeFile(path, config); err != nil {
return errors.Wrapf(err, "unable to decode configuration %v", path) return errors.Wrapf(err, "decode configuration %v", path)
} }
return nil return nil
} }
@ -517,7 +519,7 @@ func systemConfigs() ([]string, error) {
path := os.Getenv("CONTAINERS_CONF") path := os.Getenv("CONTAINERS_CONF")
if path != "" { if path != "" {
if _, err := os.Stat(path); err != nil { if _, err := os.Stat(path); err != nil {
return nil, errors.Wrapf(err, "failed to stat of %s from CONTAINERS_CONF environment variable", path) return nil, errors.Wrap(err, "CONTAINERS_CONF file")
} }
return append(configs, path), nil return append(configs, path), nil
} }
@ -554,7 +556,7 @@ func (c *Config) CheckCgroupsAndAdjustConfig() {
hasSession = err == nil hasSession = err == nil
} }
if !hasSession { if !hasSession && unshare.GetRootlessUID() != 0 {
logrus.Warningf("The cgroupv2 manager is set to systemd but there is no systemd user session available") logrus.Warningf("The cgroupv2 manager is set to systemd but there is no systemd user session available")
logrus.Warningf("For using systemd, you may need to login using an user session") logrus.Warningf("For using systemd, you may need to login using an user session")
logrus.Warningf("Alternatively, you can enable lingering with: `loginctl enable-linger %d` (possibly as root)", unshare.GetRootlessUID()) logrus.Warningf("Alternatively, you can enable lingering with: `loginctl enable-linger %d` (possibly as root)", unshare.GetRootlessUID())
@ -579,7 +581,7 @@ func (c *Config) addCAPPrefix() {
func (c *Config) Validate() error { func (c *Config) Validate() error {
if err := c.Containers.Validate(); err != nil { if err := c.Containers.Validate(); err != nil {
return errors.Wrapf(err, " error validating containers config") return errors.Wrap(err, "validating containers config")
} }
if !c.Containers.EnableLabeling { if !c.Containers.EnableLabeling {
@ -587,11 +589,11 @@ func (c *Config) Validate() error {
} }
if err := c.Engine.Validate(); err != nil { if err := c.Engine.Validate(); err != nil {
return errors.Wrapf(err, "error validating engine configs") return errors.Wrap(err, "validating engine configs")
} }
if err := c.Network.Validate(); err != nil { if err := c.Network.Validate(); err != nil {
return errors.Wrapf(err, "error validating network configs") return errors.Wrap(err, "validating network configs")
} }
return nil return nil
@ -606,7 +608,7 @@ func (c *EngineConfig) findRuntime() string {
} }
} }
if path, err := exec.LookPath(name); err == nil { if path, err := exec.LookPath(name); err == nil {
logrus.Warningf("Found default OCIruntime %s path which is missing from [engine.runtimes] in containers.conf", path) logrus.Debugf("Found default OCI runtime %s path via PATH environment variable", path)
return name return name
} }
} }
@ -1001,7 +1003,7 @@ func (c *Config) Write() error {
} }
configFile, err := os.OpenFile(path, os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0600) configFile, err := os.OpenFile(path, os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0600)
if err != nil { if err != nil {
return errors.Wrapf(err, "cannot open %s", path) return err
} }
defer configFile.Close() defer configFile.Close()
enc := toml.NewEncoder(configFile) enc := toml.NewEncoder(configFile)

View File

@ -331,10 +331,10 @@ func defaultTmpDir() (string, error) {
if err := os.Mkdir(libpodRuntimeDir, 0700|os.ModeSticky); err != nil { if err := os.Mkdir(libpodRuntimeDir, 0700|os.ModeSticky); err != nil {
if !os.IsExist(err) { if !os.IsExist(err) {
return "", errors.Wrapf(err, "cannot mkdir %s", libpodRuntimeDir) return "", err
} else if err := os.Chmod(libpodRuntimeDir, 0700|os.ModeSticky); err != nil { } else if err := os.Chmod(libpodRuntimeDir, 0700|os.ModeSticky); err != nil {
// The directory already exist, just set the sticky bit // The directory already exist, just set the sticky bit
return "", errors.Wrapf(err, "could not set sticky bit on %s", libpodRuntimeDir) return "", errors.Wrap(err, "set sticky bit on")
} }
} }
return filepath.Join(libpodRuntimeDir, "tmp"), nil return filepath.Join(libpodRuntimeDir, "tmp"), nil

View File

@ -40,7 +40,7 @@ func getRuntimeDir() (string, error) {
if runtimeDir == "" { if runtimeDir == "" {
tmpDir := filepath.Join("/run", "user", uid) tmpDir := filepath.Join("/run", "user", uid)
if err := os.MkdirAll(tmpDir, 0700); err != nil { if err := os.MkdirAll(tmpDir, 0700); err != nil {
logrus.Debugf("unable to make temp dir %s", tmpDir) logrus.Debugf("unable to make temp dir: %v", err)
} }
st, err := os.Stat(tmpDir) st, err := os.Stat(tmpDir)
if err == nil && int(st.Sys().(*syscall.Stat_t).Uid) == os.Geteuid() && st.Mode().Perm() == 0700 { if err == nil && int(st.Sys().(*syscall.Stat_t).Uid) == os.Geteuid() && st.Mode().Perm() == 0700 {
@ -50,7 +50,7 @@ func getRuntimeDir() (string, error) {
if runtimeDir == "" { if runtimeDir == "" {
tmpDir := filepath.Join(os.TempDir(), fmt.Sprintf("run-%s", uid)) tmpDir := filepath.Join(os.TempDir(), fmt.Sprintf("run-%s", uid))
if err := os.MkdirAll(tmpDir, 0700); err != nil { if err := os.MkdirAll(tmpDir, 0700); err != nil {
logrus.Debugf("unable to make temp dir %s", tmpDir) logrus.Debugf("unable to make temp dir %v", err)
} }
st, err := os.Stat(tmpDir) st, err := os.Stat(tmpDir)
if err == nil && int(st.Sys().(*syscall.Stat_t).Uid) == os.Geteuid() && st.Mode().Perm() == 0700 { if err == nil && int(st.Sys().(*syscall.Stat_t).Uid) == os.Geteuid() && st.Mode().Perm() == 0700 {
@ -65,7 +65,7 @@ func getRuntimeDir() (string, error) {
} }
resolvedHome, err := filepath.EvalSymlinks(home) resolvedHome, err := filepath.EvalSymlinks(home)
if err != nil { if err != nil {
rootlessRuntimeDirError = errors.Wrapf(err, "cannot resolve %s", home) rootlessRuntimeDirError = errors.Wrap(err, "cannot resolve home")
return return
} }
runtimeDir = filepath.Join(resolvedHome, "rundir") runtimeDir = filepath.Join(resolvedHome, "rundir")

View File

@ -138,11 +138,11 @@ func isValidDeviceMode(mode string) bool {
// ValidateVolumeHostDir validates a volume mount's source directory // ValidateVolumeHostDir validates a volume mount's source directory
func ValidateVolumeHostDir(hostDir string) error { func ValidateVolumeHostDir(hostDir string) error {
if hostDir == "" { if hostDir == "" {
return errors.Errorf("host directory cannot be empty") return errors.New("host directory cannot be empty")
} }
if filepath.IsAbs(hostDir) { if filepath.IsAbs(hostDir) {
if _, err := os.Stat(hostDir); err != nil { if _, err := os.Stat(hostDir); err != nil {
return errors.Wrapf(err, "error checking path %q", hostDir) return err
} }
} }
// If hostDir is not an absolute path, that means the user wants to create a // If hostDir is not an absolute path, that means the user wants to create a
@ -153,7 +153,7 @@ func ValidateVolumeHostDir(hostDir string) error {
// ValidateVolumeCtrDir validates a volume mount's destination directory. // ValidateVolumeCtrDir validates a volume mount's destination directory.
func ValidateVolumeCtrDir(ctrDir string) error { func ValidateVolumeCtrDir(ctrDir string) error {
if ctrDir == "" { if ctrDir == "" {
return errors.Errorf("container directory cannot be empty") return errors.New("container directory cannot be empty")
} }
if !filepath.IsAbs(ctrDir) { if !filepath.IsAbs(ctrDir) {
return errors.Errorf("invalid container path %q, must be an absolute path", ctrDir) return errors.Errorf("invalid container path %q, must be an absolute path", ctrDir)

View File

@ -22,7 +22,7 @@ func DeviceFromPath(device string) ([]devices.Device, error) {
} }
srcInfo, err := os.Stat(src) srcInfo, err := os.Stat(src)
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "error getting info of source device %s", src) return nil, err
} }
if !srcInfo.IsDir() { if !srcInfo.IsDir() {

View File

@ -299,6 +299,7 @@ func DefaultProfile() *Seccomp {
"sendmmsg", "sendmmsg",
"sendmsg", "sendmsg",
"sendto", "sendto",
"setns",
"set_robust_list", "set_robust_list",
"set_thread_area", "set_thread_area",
"set_tid_address", "set_tid_address",

View File

@ -303,6 +303,7 @@
"sendmmsg", "sendmmsg",
"sendmsg", "sendmsg",
"sendto", "sendto",
"setns",
"set_robust_list", "set_robust_list",
"set_thread_area", "set_thread_area",
"set_tid_address", "set_tid_address",

View File

@ -225,7 +225,7 @@ func addSubscriptionsFromMountsFile(filePath, mountLabel, containerWorkingDir st
logrus.Warnf("Path %q from %q doesn't exist, skipping", hostDirOrFile, filePath) logrus.Warnf("Path %q from %q doesn't exist, skipping", hostDirOrFile, filePath)
continue continue
} }
return nil, errors.Wrapf(err, "failed to stat %q", hostDirOrFile) return nil, err
} }
ctrDirOrFileOnHost := filepath.Join(containerWorkingDir, ctrDirOrFile) ctrDirOrFileOnHost := filepath.Join(containerWorkingDir, ctrDirOrFile)
@ -246,11 +246,11 @@ func addSubscriptionsFromMountsFile(filePath, mountLabel, containerWorkingDir st
switch mode := fileInfo.Mode(); { switch mode := fileInfo.Mode(); {
case mode.IsDir(): case mode.IsDir():
if err = os.MkdirAll(ctrDirOrFileOnHost, mode.Perm()); err != nil { if err = os.MkdirAll(ctrDirOrFileOnHost, mode.Perm()); err != nil {
return nil, errors.Wrapf(err, "making container directory %q failed", ctrDirOrFileOnHost) return nil, errors.Wrap(err, "making container directory")
} }
data, err := getHostSubscriptionData(hostDirOrFile, mode.Perm()) data, err := getHostSubscriptionData(hostDirOrFile, mode.Perm())
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "getting host subscription data failed") return nil, errors.Wrap(err, "getting host subscription data")
} }
for _, s := range data { for _, s := range data {
if err := s.saveTo(ctrDirOrFileOnHost); err != nil { if err := s.saveTo(ctrDirOrFileOnHost); err != nil {
@ -260,7 +260,7 @@ func addSubscriptionsFromMountsFile(filePath, mountLabel, containerWorkingDir st
case mode.IsRegular(): case mode.IsRegular():
data, err := readFileOrDir("", hostDirOrFile, mode.Perm()) data, err := readFileOrDir("", hostDirOrFile, mode.Perm())
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "error reading file %q", hostDirOrFile) return nil, err
} }
for _, s := range data { for _, s := range data {
@ -268,7 +268,7 @@ func addSubscriptionsFromMountsFile(filePath, mountLabel, containerWorkingDir st
return nil, err return nil, err
} }
if err := ioutil.WriteFile(ctrDirOrFileOnHost, s.data, s.mode); err != nil { if err := ioutil.WriteFile(ctrDirOrFileOnHost, s.data, s.mode); err != nil {
return nil, errors.Wrapf(err, "error saving data to container filesystem on host %q", ctrDirOrFileOnHost) return nil, errors.Wrap(err, "saving data to container filesystem")
} }
} }
default: default:
@ -285,7 +285,7 @@ func addSubscriptionsFromMountsFile(filePath, mountLabel, containerWorkingDir st
} }
} }
} else if err != nil { } else if err != nil {
return nil, errors.Wrapf(err, "error getting status of %q", ctrDirOrFileOnHost) return nil, err
} }
m := rspec.Mount{ m := rspec.Mount{
@ -309,10 +309,10 @@ func addFIPSModeSubscription(mounts *[]rspec.Mount, containerWorkingDir, mountPo
ctrDirOnHost := filepath.Join(containerWorkingDir, subscriptionsDir) ctrDirOnHost := filepath.Join(containerWorkingDir, subscriptionsDir)
if _, err := os.Stat(ctrDirOnHost); os.IsNotExist(err) { if _, err := os.Stat(ctrDirOnHost); os.IsNotExist(err) {
if err = idtools.MkdirAllAs(ctrDirOnHost, 0755, uid, gid); err != nil { //nolint if err = idtools.MkdirAllAs(ctrDirOnHost, 0755, uid, gid); err != nil { //nolint
return errors.Wrapf(err, "making container directory %q on host failed", ctrDirOnHost) return err
} }
if err = label.Relabel(ctrDirOnHost, mountLabel, false); err != nil { if err = label.Relabel(ctrDirOnHost, mountLabel, false); err != nil {
return errors.Wrapf(err, "error applying correct labels on %q", ctrDirOnHost) return errors.Wrapf(err, "applying correct labels on %q", ctrDirOnHost)
} }
} }
fipsFile := filepath.Join(ctrDirOnHost, "system-fips") fipsFile := filepath.Join(ctrDirOnHost, "system-fips")
@ -320,7 +320,7 @@ func addFIPSModeSubscription(mounts *[]rspec.Mount, containerWorkingDir, mountPo
if _, err := os.Stat(fipsFile); os.IsNotExist(err) { if _, err := os.Stat(fipsFile); os.IsNotExist(err) {
file, err := os.Create(fipsFile) file, err := os.Create(fipsFile)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating system-fips file in container for FIPS mode") return errors.Wrap(err, "creating system-fips file in container for FIPS mode")
} }
defer file.Close() defer file.Close()
} }
@ -342,7 +342,7 @@ func addFIPSModeSubscription(mounts *[]rspec.Mount, containerWorkingDir, mountPo
if os.IsNotExist(err) { if os.IsNotExist(err) {
return nil return nil
} }
return errors.Wrapf(err, "failed to stat FIPS Backend directory %q", ctrDirOnHost) return errors.Wrap(err, "FIPS Backend directory")
} }
if !mountExists(*mounts, destDir) { if !mountExists(*mounts, destDir) {

View File

@ -1,4 +1,4 @@
package version package version
// Version is the version of the build. // Version is the version of the build.
const Version = "0.36.0" const Version = "0.37.0"

2
vendor/modules.txt vendored
View File

@ -93,7 +93,7 @@ github.com/containers/buildah/pkg/parse
github.com/containers/buildah/pkg/rusage github.com/containers/buildah/pkg/rusage
github.com/containers/buildah/pkg/supplemented github.com/containers/buildah/pkg/supplemented
github.com/containers/buildah/util github.com/containers/buildah/util
# github.com/containers/common v0.36.0 # github.com/containers/common v0.37.0
github.com/containers/common/pkg/apparmor github.com/containers/common/pkg/apparmor
github.com/containers/common/pkg/apparmor/internal/supported github.com/containers/common/pkg/apparmor/internal/supported
github.com/containers/common/pkg/auth github.com/containers/common/pkg/auth