diff options
Diffstat (limited to 'vendor/github.com/rootless-containers/rootlesskit/pkg/port/builtin/child/child.go')
-rw-r--r-- | vendor/github.com/rootless-containers/rootlesskit/pkg/port/builtin/child/child.go | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/vendor/github.com/rootless-containers/rootlesskit/pkg/port/builtin/child/child.go b/vendor/github.com/rootless-containers/rootlesskit/pkg/port/builtin/child/child.go index 112a926c3..fc249c2d9 100644 --- a/vendor/github.com/rootless-containers/rootlesskit/pkg/port/builtin/child/child.go +++ b/vendor/github.com/rootless-containers/rootlesskit/pkg/port/builtin/child/child.go @@ -106,7 +106,21 @@ func (d *childDriver) handleConnectRequest(c *net.UnixConn, req *msg.Request) er return errors.Errorf("unknown proto: %q", req.Proto) } var dialer net.Dialer - targetConn, err := dialer.Dial(req.Proto, fmt.Sprintf("127.0.0.1:%d", req.Port)) + ip := req.IP + if ip == "" { + ip = "127.0.0.1" + } else { + p := net.ParseIP(ip) + if p == nil { + return errors.Errorf("invalid IP: %q", ip) + } + p = p.To4() + if p == nil { + return errors.Errorf("unsupported IP (v6?): %s", ip) + } + ip = p.String() + } + targetConn, err := dialer.Dial(req.Proto, fmt.Sprintf("%s:%d", ip, req.Port)) if err != nil { return err } |