mirror of https://github.com/containers/podman.git
Merge pull request #1704 from giuseppe/attach-cuid-too-long
attach: fix attach when cuid is too long
This commit is contained in:
commit
ee513cca86
|
@ -5,6 +5,7 @@ import (
|
|||
"github.com/containers/libpod/pkg/rootless"
|
||||
"github.com/containers/libpod/pkg/util"
|
||||
"github.com/containers/storage"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
|
@ -42,6 +43,9 @@ func GetRuntimeWithStorageOpts(c *cli.Context, storageOpts *storage.StoreOptions
|
|||
if c.GlobalIsSet("runroot") {
|
||||
storageOpts.RunRoot = c.GlobalString("runroot")
|
||||
}
|
||||
if len(storageOpts.RunRoot) > 50 {
|
||||
return nil, errors.New("the specified runroot is longer than 50 characters")
|
||||
}
|
||||
if c.GlobalIsSet("storage-driver") {
|
||||
storageOpts.GraphDriverName = c.GlobalString("storage-driver")
|
||||
}
|
||||
|
|
|
@ -16,6 +16,10 @@ import (
|
|||
"k8s.io/client-go/tools/remotecommand"
|
||||
)
|
||||
|
||||
//#include <sys/un.h>
|
||||
// extern int unix_path_length(){struct sockaddr_un addr; return sizeof(addr.sun_path) - 1;}
|
||||
import "C"
|
||||
|
||||
/* Sync with stdpipe_t in conmon.c */
|
||||
const (
|
||||
AttachPipeStdin = 1
|
||||
|
@ -81,11 +85,19 @@ func (c *Container) attachContainerSocket(resize <-chan remotecommand.TerminalSi
|
|||
logrus.Warnf("Failed to write to control file to resize terminal: %v", err)
|
||||
}
|
||||
})
|
||||
logrus.Debug("connecting to socket ", c.AttachSocketPath())
|
||||
|
||||
conn, err := net.DialUnix("unixpacket", nil, &net.UnixAddr{Name: c.AttachSocketPath(), Net: "unixpacket"})
|
||||
socketPath := c.AttachSocketPath()
|
||||
|
||||
maxUnixLength := int(C.unix_path_length())
|
||||
if maxUnixLength < len(socketPath) {
|
||||
socketPath = socketPath[0:maxUnixLength]
|
||||
}
|
||||
|
||||
logrus.Debug("connecting to socket ", socketPath)
|
||||
|
||||
conn, err := net.DialUnix("unixpacket", nil, &net.UnixAddr{Name: socketPath, Net: "unixpacket"})
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "failed to connect to container's attach socket: %v", c.AttachSocketPath())
|
||||
return errors.Wrapf(err, "failed to connect to container's attach socket: %v", socketPath)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
|
|
Loading…
Reference in New Issue