Skip to content

Commit 1d4ec5d

Browse files
ningmingxiaokolyshkin
authored andcommitted
skip read /proc/filesystems if process_label is null
Signed-off-by: ningmingxiao <[email protected]>
1 parent 74b35d8 commit 1d4ec5d

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

libcontainer/setns_init_linux.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@ func (l *linuxSetnsInit) getSessionRingName() string {
3333

3434
func (l *linuxSetnsInit) Init() error {
3535
if !l.config.Config.NoNewKeyring {
36-
if err := selinux.SetKeyLabel(l.config.ProcessLabel); err != nil {
37-
return err
36+
if l.config.ProcessLabel != "" {
37+
if err := selinux.SetKeyLabel(l.config.ProcessLabel); err != nil {
38+
return err
39+
}
40+
defer selinux.SetKeyLabel("") //nolint: errcheck
3841
}
39-
defer selinux.SetKeyLabel("") //nolint: errcheck
4042
// Do not inherit the parent's session keyring.
4143
if _, err := keys.JoinSessionKeyring(l.getSessionRingName()); err != nil {
4244
// Same justification as in standart_init_linux.go as to why we
@@ -84,11 +86,12 @@ func (l *linuxSetnsInit) Init() error {
8486
if err := syncParentReady(l.pipe); err != nil {
8587
return fmt.Errorf("sync ready: %w", err)
8688
}
87-
88-
if err := selinux.SetExecLabel(l.config.ProcessLabel); err != nil {
89-
return err
89+
if l.config.ProcessLabel != "" {
90+
if err := selinux.SetExecLabel(l.config.ProcessLabel); err != nil {
91+
return err
92+
}
93+
defer selinux.SetExecLabel("") //nolint: errcheck
9094
}
91-
defer selinux.SetExecLabel("") //nolint: errcheck
9295
// Without NoNewPrivileges seccomp is a privileged operation, so we need to
9396
// do this before dropping capabilities; otherwise do it as late as possible
9497
// just before execve so as few syscalls take place after it as possible.

libcontainer/standard_init_linux.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,12 @@ func (l *linuxStandardInit) getSessionRingParams() (string, uint32, uint32) {
4747

4848
func (l *linuxStandardInit) Init() error {
4949
if !l.config.Config.NoNewKeyring {
50-
if err := selinux.SetKeyLabel(l.config.ProcessLabel); err != nil {
51-
return err
50+
if l.config.ProcessLabel != "" {
51+
if err := selinux.SetKeyLabel(l.config.ProcessLabel); err != nil {
52+
return err
53+
}
54+
defer selinux.SetKeyLabel("") //nolint: errcheck
5255
}
53-
defer selinux.SetKeyLabel("") //nolint: errcheck
5456
ringname, keepperms, newperms := l.getSessionRingParams()
5557

5658
// Do not inherit the parent's session keyring.
@@ -169,10 +171,12 @@ func (l *linuxStandardInit) Init() error {
169171
if err := syncParentReady(l.pipe); err != nil {
170172
return fmt.Errorf("sync ready: %w", err)
171173
}
172-
if err := selinux.SetExecLabel(l.config.ProcessLabel); err != nil {
173-
return fmt.Errorf("can't set process label: %w", err)
174+
if l.config.ProcessLabel != "" {
175+
if err := selinux.SetExecLabel(l.config.ProcessLabel); err != nil {
176+
return fmt.Errorf("can't set process label: %w", err)
177+
}
178+
defer selinux.SetExecLabel("") //nolint: errcheck
174179
}
175-
defer selinux.SetExecLabel("") //nolint: errcheck
176180
// Without NoNewPrivileges seccomp is a privileged operation, so we need to
177181
// do this before dropping capabilities; otherwise do it as late as possible
178182
// just before execve so as few syscalls take place after it as possible.

0 commit comments

Comments
 (0)