From: ianwoolf Date: Wed, 27 Jul 2022 16:55:31 +0000 (+0800) Subject: net: Resolver.LookupIP return error for empty string X-Git-Tag: go1.20rc1~1377 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=333681d6a8cc6f352d42d04bcf26b39a1ea7ef83;p=gostls13.git net: Resolver.LookupIP return error for empty string Fixes #53995 Change-Id: Ib0de237b57382feb6b8070f2310945aef6c7db01 Reviewed-on: https://go-review.googlesource.com/c/go/+/419734 Reviewed-by: Damien Neil Reviewed-by: David Chase TryBot-Result: Gopher Robot Run-TryBot: Damien Neil --- diff --git a/src/net/lookup.go b/src/net/lookup.go index b283c67945..969c902b1d 100644 --- a/src/net/lookup.go +++ b/src/net/lookup.go @@ -224,10 +224,15 @@ func (r *Resolver) LookupIP(ctx context.Context, network, host string) ([]IP, er default: return nil, UnknownNetworkError(network) } + + if host == "" { + return nil, &DNSError{Err: errNoSuchHost.Error(), Name: host, IsNotFound: true} + } addrs, err := r.internetAddrList(ctx, afnet, host) if err != nil { return nil, err } + ips := make([]IP, 0, len(addrs)) for _, addr := range addrs { ips = append(ips, addr.(*IPAddr).IP) diff --git a/src/net/lookup_test.go b/src/net/lookup_test.go index 3a31f56bea..24d4fbf66d 100644 --- a/src/net/lookup_test.go +++ b/src/net/lookup_test.go @@ -1208,6 +1208,17 @@ func TestLookupIPAddrConcurrentCallsForNetworks(t *testing.T) { wg.Wait() } +// Issue 53995: Resolver.LookupIP should return error for empty host name. +func TestResolverLookupIPWithEmptyHost(t *testing.T) { + _, err := DefaultResolver.LookupIP(context.Background(), "ip", "") + if err == nil { + t.Fatal("DefaultResolver.LookupIP for empty host success, want no host error") + } + if !strings.HasSuffix(err.Error(), errNoSuchHost.Error()) { + t.Fatalf("lookup error = %v, want %v", err, errNoSuchHost) + } +} + func TestWithUnexpiredValuesPreserved(t *testing.T) { ctx, cancel := context.WithCancel(context.Background())