From 4dc7c8e2f49e7a13e0b380a777ac7b34fb7f4459 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 29 Jul 2013 13:09:39 -0400 Subject: [PATCH] go.crypto/ssh: seed random generator, so auto port allocation is truly random. R=agl, dave CC=golang-dev https://golang.org/cl/12027043 --- ssh/tcpip.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ssh/tcpip.go b/ssh/tcpip.go index 5abd690..f198554 100644 --- a/ssh/tcpip.go +++ b/ssh/tcpip.go @@ -44,6 +44,8 @@ type channelForwardMsg struct { const openSSHPrefix = "OpenSSH_" +var portRandomizer = rand.New(rand.NewSource(time.Now().UnixNano())) + // isBrokenOpenSSHVersion returns true if the given version string // specifies a version of OpenSSH that is known to have a bug in port // forwarding. @@ -71,7 +73,7 @@ func (c *ClientConn) autoPortListenWorkaround(laddr *net.TCPAddr) (net.Listener, const tries = 10 for i := 0; i < tries; i++ { addr := *laddr - addr.Port = 1024 + rand.Intn(60000) + addr.Port = 1024 + portRandomizer.Intn(60000) sshListener, err = c.ListenTCP(&addr) if err == nil { laddr.Port = addr.Port