go.net/proxy: don't pass invalid domain name length to SOCKS5 proxies

SOCKS5 uses a single-byte field for domain name length. This change
causes dials to domain names longer than 255 chars to fail instead
of sending an invalid request to the proxy.

LGTM=mikioh.mikioh
R=golang-codereviews, mikioh.mikioh
CC=golang-codereviews
https://golang.org/cl/90790044
diff --git a/proxy/socks5.go b/proxy/socks5.go
index 5b30f47..9b96282 100644
--- a/proxy/socks5.go
+++ b/proxy/socks5.go
@@ -149,6 +149,9 @@
 		}
 		buf = append(buf, ip...)
 	} else {
+		if len(host) > 255 {
+			return nil, errors.New("proxy: destination hostname too long: " + host)
+		}
 		buf = append(buf, socks5Domain)
 		buf = append(buf, byte(len(host)))
 		buf = append(buf, host...)