build(deps): bump github.com/opencontainers/selinux

Bumps [github.com/opencontainers/selinux](https://github.com/opencontainers/selinux) from 1.14.1 to 1.15.1.
- [Release notes](https://github.com/opencontainers/selinux/releases)
- [Commits](https://github.com/opencontainers/selinux/compare/v1.14.1...v1.15.1)

---
updated-dependencies:
- dependency-name: github.com/opencontainers/selinux
  dependency-version: 1.15.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
dependabot[bot]
2026-06-03 22:17:11 +00:00
committed by GitHub
parent 3047d61ff9
commit 9ffc42622a
7 changed files with 82 additions and 8 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ require (
github.com/mrunalp/fileutils v0.5.1 github.com/mrunalp/fileutils v0.5.1
github.com/opencontainers/cgroups v0.0.6 github.com/opencontainers/cgroups v0.0.6
github.com/opencontainers/runtime-spec v1.3.0 github.com/opencontainers/runtime-spec v1.3.0
github.com/opencontainers/selinux v1.14.1 github.com/opencontainers/selinux v1.15.1
github.com/seccomp/libseccomp-golang v0.11.1 github.com/seccomp/libseccomp-golang v0.11.1
github.com/sirupsen/logrus v1.9.4 github.com/sirupsen/logrus v1.9.4
github.com/urfave/cli/v3 v3.9.0 github.com/urfave/cli/v3 v3.9.0
+2 -2
View File
@@ -48,8 +48,8 @@ github.com/opencontainers/cgroups v0.0.6 h1:tfZFWTIIGaUUFImTyuTg+Mr5x8XRiSdZESgE
github.com/opencontainers/cgroups v0.0.6/go.mod h1:oWVzJsKK0gG9SCRBfTpnn16WcGEqDI8PAcpMGbqWxcs= github.com/opencontainers/cgroups v0.0.6/go.mod h1:oWVzJsKK0gG9SCRBfTpnn16WcGEqDI8PAcpMGbqWxcs=
github.com/opencontainers/runtime-spec v1.3.0 h1:YZupQUdctfhpZy3TM39nN9Ika5CBWT5diQ8ibYCRkxg= github.com/opencontainers/runtime-spec v1.3.0 h1:YZupQUdctfhpZy3TM39nN9Ika5CBWT5diQ8ibYCRkxg=
github.com/opencontainers/runtime-spec v1.3.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.3.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
github.com/opencontainers/selinux v1.14.1 h1:a7XlXV/nN/l5zFP1FWZYoExpClu1QOPMfWUV2CZ8kEQ= github.com/opencontainers/selinux v1.15.1 h1:ERxeh5caJvCzNAKdI8WQbJmB1LDTn4BuaAg8wihLBpA=
github.com/opencontainers/selinux v1.14.1/go.mod h1:LenyElirjUHszfxrjuFqC85HIeXZKumHcKMQtnaDlQQ= github.com/opencontainers/selinux v1.15.1/go.mod h1:LenyElirjUHszfxrjuFqC85HIeXZKumHcKMQtnaDlQQ=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
+8 -3
View File
@@ -10,7 +10,6 @@ import (
// Valid Label Options // Valid Label Options
var validOptions = map[string]bool{ var validOptions = map[string]bool{
"disable": true,
"type": true, "type": true,
"filetype": true, "filetype": true,
"user": true, "user": true,
@@ -35,9 +34,13 @@ func InitLabels(options []string) (plabel string, mlabel string, retErr error) {
if !selinux.GetEnabled() { if !selinux.GetEnabled() {
return "", "", nil return "", "", nil
} }
if len(options) > 0 && options[0] == "disable" {
return "", selinux.PrivContainerMountLabel(), nil
}
processLabel, mountLabel := selinux.ContainerLabels() //nolint:staticcheck // ContainerLabels will be moved to an internal package. processLabel, mountLabel := selinux.ContainerLabels() //nolint:staticcheck // ContainerLabels will be moved to an internal package.
if processLabel == "" { if processLabel == "" || len(options) == 0 {
// processLabel is required; if empty, do nothing. // 1. processLabel is required; if empty, do nothing.
// 2. If there are no options to process, we're done.
return processLabel, mountLabel, nil return processLabel, mountLabel, nil
} }
defer func() { defer func() {
@@ -55,6 +58,8 @@ func InitLabels(options []string) (plabel string, mlabel string, retErr error) {
return "", "", err return "", "", err
} }
for _, opt := range options { for _, opt := range options {
// For backward compatibility, process "disable"
// even if it's not the only option.
if opt == "disable" { if opt == "disable" {
selinux.ReleaseLabel(mountLabel) selinux.ReleaseLabel(mountLabel)
return "", selinux.PrivContainerMountLabel(), nil return "", selinux.PrivContainerMountLabel(), nil
+20
View File
@@ -48,6 +48,21 @@ var (
privContainerMountLabel string privContainerMountLabel string
) )
// ProcessKind selects which process domain [SetProcessKind] applies to a label.
type ProcessKind int
const (
ProcessKindRegular ProcessKind = 1
ProcessKindInit ProcessKind = 2
ProcessKindKVM ProcessKind = 3
)
// SetProcessKind returns label with its type component replaced by the one
// corresponding to kind. Other label components are kept intact.
func SetProcessKind(label string, kind ProcessKind) (string, error) {
return setProcessKind(label, kind)
}
// Context is a representation of the SELinux label broken into 4 parts // Context is a representation of the SELinux label broken into 4 parts
type Context map[string]string type Context map[string]string
@@ -231,6 +246,7 @@ func ReserveLabel(label string) {
} }
// ReserveLabelV2 reserves the MLS/MCS level component of the specified label. // ReserveLabelV2 reserves the MLS/MCS level component of the specified label.
// Labels without MLS/MCS category component (":c") are ignored.
// Returns an error if the label can't be reserved. // Returns an error if the label can't be reserved.
// //
// Callers that are intentionally reusing an existing level/MCS (e.g. multiple // Callers that are intentionally reusing an existing level/MCS (e.g. multiple
@@ -292,6 +308,8 @@ func KVMContainerLabels() (string, string) {
// KVMContainerLabel returns the default process label to be used // KVMContainerLabel returns the default process label to be used
// for KVM containers by the calling process. // for KVM containers by the calling process.
//
// If you only need to change a type of existing label, use [SetProcessKind] instead.
func KVMContainerLabel() (string, error) { func KVMContainerLabel() (string, error) {
return kvmContainerLabel() return kvmContainerLabel()
} }
@@ -306,6 +324,8 @@ func InitContainerLabels() (string, string) {
// InitContainerLabel returns the default process label to be used // InitContainerLabel returns the default process label to be used
// for containers running an init system like systemd by the calling process. // for containers running an init system like systemd by the calling process.
//
// If you only need to change a type of existing label, use [SetProcessKind] instead.
func InitContainerLabel() (string, error) { func InitContainerLabel() (string, error) {
return initContainerLabel() return initContainerLabel()
} }
+46 -1
View File
@@ -890,8 +890,10 @@ func defaultEnforceMode() int {
return Disabled return Disabled
} }
// mcsAdd reserves a level. If the argument is empty or does not contain
// MCS/MLS category component (no ":c"), it is ignored.
func mcsAdd(mcs string) error { func mcsAdd(mcs string) error {
if mcs == "" { if !strings.Contains(mcs, ":c") {
return nil return nil
} }
state.Lock() state.Lock()
@@ -1513,3 +1515,46 @@ func getDefaultContextWithLevel(user, level, scon string) (string, error) {
return getDefaultContextFromReaders(&c) return getDefaultContextFromReaders(&c)
} }
func (k ProcessKind) keys() (primary, fallback string, ok bool) {
switch k {
case ProcessKindRegular:
return "process", "", true
case ProcessKindInit:
return "init_process", "process", true
case ProcessKindKVM:
return "kvm_process", "process", true
}
return "", "", false
}
func setProcessKind(cLabel string, k ProcessKind) (string, error) {
if cLabel == "" {
return "", nil
}
primary, fallback, ok := k.keys()
if !ok {
return "", fmt.Errorf("selinux.SetProcessKind: invalid ProcessKind %d", k)
}
src := label(primary)
if src == "" && fallback != "" {
src = label(fallback)
}
if src == "" {
return cLabel, nil
}
// Replace cLabel type with one from src.
srcCtx, err := newContext(src)
if err != nil {
return "", fmt.Errorf("selinux.SetProcessKind: invalid %s label %s: %w", primary, src, err)
}
dstCtx, err := newContext(cLabel)
if err != nil {
return "", fmt.Errorf("selinux.SetProcessKind: invalid label %s: %w", cLabel, err)
}
dstCtx["type"] = srcCtx["type"]
return dstCtx.get(), nil
}
+4
View File
@@ -157,3 +157,7 @@ func getDefaultContextWithLevel(string, string, string) (string, error) {
func label(_ string) string { func label(_ string) string {
return "" return ""
} }
func setProcessKind(string, ProcessKind) (string, error) {
return "", nil
}
+1 -1
View File
@@ -82,7 +82,7 @@ github.com/opencontainers/cgroups/systemd
## explicit ## explicit
github.com/opencontainers/runtime-spec/specs-go github.com/opencontainers/runtime-spec/specs-go
github.com/opencontainers/runtime-spec/specs-go/features github.com/opencontainers/runtime-spec/specs-go/features
# github.com/opencontainers/selinux v1.14.1 # github.com/opencontainers/selinux v1.15.1
## explicit; go 1.22 ## explicit; go 1.22
github.com/opencontainers/selinux/go-selinux github.com/opencontainers/selinux/go-selinux
github.com/opencontainers/selinux/go-selinux/label github.com/opencontainers/selinux/go-selinux/label