diff options
author | Daniel J Walsh <dwalsh@redhat.com> | 2019-01-18 15:01:53 -0500 |
---|---|---|
committer | Daniel J Walsh <dwalsh@redhat.com> | 2019-01-18 17:08:46 -0500 |
commit | 8cf929c0950e985880b268ae4c8ad08d98bc4073 (patch) | |
tree | c7cdbd76bed38d32073a91913f5fda37630ef197 /libpod | |
parent | 37002ad549fc6bd5dd7cb126433d3a9580451a70 (diff) | |
download | podman-8cf929c0950e985880b268ae4c8ad08d98bc4073.tar.gz podman-8cf929c0950e985880b268ae4c8ad08d98bc4073.tar.bz2 podman-8cf929c0950e985880b268ae4c8ad08d98bc4073.zip |
Vendor in latest opencontainers/selinux
This will now verify labels passed in by the user.
Will also prevent users from accidently relabeling their homedir.
podman run -ti -v ~/home/user:Z fedora sh
Is not a good idea.
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/oci.go | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/libpod/oci.go b/libpod/oci.go index 4092657f8..b0c19d5e8 100644 --- a/libpod/oci.go +++ b/libpod/oci.go @@ -356,18 +356,25 @@ func (r *OCIRuntime) createOCIContainer(ctr *Container, cgroupParent string, res // Set the label of the conmon process to be level :s0 // This will allow the container processes to talk to fifo-files // passed into the container by conmon - var plabel string + var ( + plabel string + con selinux.Context + ) plabel, err = selinux.CurrentLabel() if err != nil { childPipe.Close() return errors.Wrapf(err, "Failed to get current SELinux label") } - c := selinux.NewContext(plabel) + con, err = selinux.NewContext(plabel) + if err != nil { + return errors.Wrapf(err, "Failed to get new context from SELinux label") + } + runtime.LockOSThread() - if c["level"] != "s0" && c["level"] != "" { - c["level"] = "s0" - if err = label.SetProcessLabel(c.Get()); err != nil { + if con["level"] != "s0" && con["level"] != "" { + con["level"] = "s0" + if err = label.SetProcessLabel(con.Get()); err != nil { runtime.UnlockOSThread() return err } |