mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 03:11:40 +00:00
This updates vendored runc/libcontainer to 1.1.0, and google/cadvisor to a version updated to runc 1.1.0 (google/cadvisor#3048). Changes in vendor are generated by (roughly): ./hack/pin-dependency.sh github.com/google/cadvisor v0.44.0 ./hack/pin-dependency.sh github.com/opencontainers/runc v1.1.0 ./hack/update-vendor.sh ./hack/lint-dependencies.sh # And follow all its recommendations. ./hack/update-vendor.sh ./hack/update-internal-modules.sh ./hack/lint-dependencies.sh # Re-check everything again. Co-Authored-By: Kir Kolyshkin <kolyshkin@gmail.com>
46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
package keys
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"golang.org/x/sys/unix"
|
|
)
|
|
|
|
type KeySerial uint32
|
|
|
|
func JoinSessionKeyring(name string) (KeySerial, error) {
|
|
sessKeyID, err := unix.KeyctlJoinSessionKeyring(name)
|
|
if err != nil {
|
|
return 0, fmt.Errorf("unable to create session key: %w", err)
|
|
}
|
|
return KeySerial(sessKeyID), nil
|
|
}
|
|
|
|
// ModKeyringPerm modifies permissions on a keyring by reading the current permissions,
|
|
// anding the bits with the given mask (clearing permissions) and setting
|
|
// additional permission bits
|
|
func ModKeyringPerm(ringID KeySerial, mask, setbits uint32) error {
|
|
dest, err := unix.KeyctlString(unix.KEYCTL_DESCRIBE, int(ringID))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
res := strings.Split(dest, ";")
|
|
if len(res) < 5 {
|
|
return errors.New("Destination buffer for key description is too small")
|
|
}
|
|
|
|
// parse permissions
|
|
perm64, err := strconv.ParseUint(res[3], 16, 32)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
perm := (uint32(perm64) & mask) | setbits
|
|
|
|
return unix.KeyctlSetperm(int(ringID), perm)
|
|
}
|