mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-11 06:03:57 +08:00
Skip redundant setup for /dev/ptmx when specified explicitly in the OCI spec.
Per the OCI spec, /dev/ptmx is always a symlink to /dev/pts/ptmx. As such, if the OCI spec has an explicit entry for /dev/ptmx, runc shall ignore it. This change ensures this is the case. A integration test was also added (in tests/integration/dev.bats). Signed-off-by: Cesar Talledo <ctalledo@nestybox.com>
This commit is contained in:
@@ -19,6 +19,7 @@ import (
|
||||
"github.com/opencontainers/runc/libcontainer/cgroups"
|
||||
"github.com/opencontainers/runc/libcontainer/configs"
|
||||
"github.com/opencontainers/runc/libcontainer/system"
|
||||
"github.com/opencontainers/runc/libcontainer/utils"
|
||||
libcontainerUtils "github.com/opencontainers/runc/libcontainer/utils"
|
||||
"github.com/opencontainers/selinux/go-selinux/label"
|
||||
|
||||
@@ -589,6 +590,12 @@ func createDevices(config *configs.Config) error {
|
||||
useBindMount := system.RunningInUserNS() || config.Namespaces.Contains(configs.NEWUSER)
|
||||
oldMask := unix.Umask(0000)
|
||||
for _, node := range config.Devices {
|
||||
|
||||
// The /dev/ptmx device is setup by setupPtmx()
|
||||
if utils.CleanPath(node.Path) == "/dev/ptmx" {
|
||||
continue
|
||||
}
|
||||
|
||||
// containers running in a user namespace are not allowed to mknod
|
||||
// devices so we can just bind mount it from the host.
|
||||
if err := createDeviceNode(config.Rootfs, node, useBindMount); err != nil {
|
||||
|
||||
@@ -11,9 +11,9 @@ function teardown() {
|
||||
teardown_busybox
|
||||
}
|
||||
|
||||
@test "runc run [redundant default dev]" {
|
||||
@test "runc run [redundant default /dev/tty]" {
|
||||
update_config ' .linux.devices += [{"path": "/dev/tty", "type": "c", "major": 5, "minor": 0}]
|
||||
| .process.args |= ["ls", "-l", "/dev/tty"]'
|
||||
| .process.args |= ["ls", "-lL", "/dev/tty"]'
|
||||
|
||||
runc run test_dev
|
||||
[ "$status" -eq 0 ]
|
||||
@@ -24,3 +24,12 @@ function teardown() {
|
||||
[[ "${lines[0]}" =~ "crw-rw-rw".+"1".+"root".+"root".+"5,".+"0".+"/dev/tty" ]]
|
||||
fi
|
||||
}
|
||||
|
||||
@test "runc run [redundant default /dev/ptmx]" {
|
||||
update_config ' .linux.devices += [{"path": "/dev/ptmx", "type": "c", "major": 5, "minor": 2}]
|
||||
| .process.args |= ["ls", "-lL", "/dev/ptmx"]'
|
||||
|
||||
runc run test_dev
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "${lines[0]}" =~ "crw-rw-rw".+"1".+"root".+"root".+"5,".+"2".+"/dev/ptmx" ]]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user