diff --git a/libcontainer/container_linux.go b/libcontainer/container_linux.go index 3af5da7dcd7..e3e2cf2bdb8 100644 --- a/libcontainer/container_linux.go +++ b/libcontainer/container_linux.go @@ -411,7 +411,7 @@ func (c *Container) Signal(s os.Signal) error { return nil } -func (c *Container) createExecFifo() error { +func (c *Container) createExecFifo() (retErr error) { rootuid, err := c.Config().HostRootUID() if err != nil { return err @@ -425,6 +425,11 @@ func (c *Container) createExecFifo() error { if err := unix.Mkfifo(fifoName, 0o622); err != nil { return &os.PathError{Op: "mkfifo", Path: fifoName, Err: err} } + defer func() { + if retErr != nil { + os.Remove(fifoName) + } + }() // Ensure permission bits (can be different because of umask). if err := os.Chmod(fifoName, 0o622); err != nil { return err