]> Cypherpunks repositories - gostls13.git/commitdiff
net: Resolver.LookupIP return error for empty string
authorianwoolf <btw515wolf2@gmail.com>
Wed, 27 Jul 2022 16:55:31 +0000 (00:55 +0800)
committerDamien Neil <dneil@google.com>
Fri, 26 Aug 2022 22:52:50 +0000 (22:52 +0000)
Fixes #53995

Change-Id: Ib0de237b57382feb6b8070f2310945aef6c7db01
Reviewed-on: https://go-review.googlesource.com/c/go/+/419734
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Damien Neil <dneil@google.com>

src/net/lookup.go
src/net/lookup_test.go

index b283c679454846ab2d732c16989344a86bb38a6a..969c902b1d44b7f45022fe6470eeacbd17e63321 100644 (file)
@@ -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)
index 3a31f56bea845056a6afe3ebe2b12a28b2ef9577..24d4fbf66db8495b20c11911c55772139e55963a 100644 (file)
@@ -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())