Commit 4e35e5fc authored by Jakob Borg's avatar Jakob Borg Committed by Brad Fitzpatrick

net/http: fix ProxyFromEnvironment panic on invalid $NO_PROXY value

Given an entry in $no_proxy like ":1" we would interpret it as an empty
host name and a port number, then check the first character of the host
name for dots. This would then cause an index out of range panic. This
change simply skips these entries, as the following checks would anyway
have returned false.

Fixes #19536

Change-Id: Iafe9c7a77ad4a6278c8ccb00a1575b56e4bdcd79
Reviewed-on: https://go-review.googlesource.com/38067Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
parent df68afd0
......@@ -79,3 +79,9 @@ func ResetProxyEnv() {
}
ResetCachedEnvironment()
}
func TestInvalidNoProxy(t *testing.T) {
ResetProxyEnv()
os.Setenv("NO_PROXY", ":1")
useProxy("example.com:80") // should not panic
}
......@@ -1227,6 +1227,10 @@ func useProxy(addr string) bool {
if addr == p {
return false
}
if len(p) == 0 {
// There is no host part, likely the entry is malformed; ignore.
continue
}
if p[0] == '.' && (strings.HasSuffix(addr, p) || addr == p[1:]) {
// no_proxy ".foo.com" matches "bar.foo.com" or "foo.com"
return false
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment