From ee4ee2751e1126bc04697cb26adec8e0f70bc132 Mon Sep 17 00:00:00 2001 From: gVisor bot Date: Mon, 13 Sep 2021 23:58:34 +0800 Subject: [PATCH] Fix: potential pitfalls --- dns/client.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/dns/client.go b/dns/client.go index d386ed4c..6a54f9fa 100644 --- a/dns/client.go +++ b/dns/client.go @@ -20,15 +20,20 @@ type client struct { host string } -func (c *client) Exchange(m *D.Msg) (msg *D.Msg, err error) { +func (c *client) Exchange(m *D.Msg) (*D.Msg, error) { return c.ExchangeContext(context.Background(), m) } -func (c *client) ExchangeContext(ctx context.Context, m *D.Msg) (msg *D.Msg, err error) { - var ip net.IP +func (c *client) ExchangeContext(ctx context.Context, m *D.Msg) (*D.Msg, error) { + var ( + ip net.IP + err error + ) if c.r == nil { // a default ip dns - ip = net.ParseIP(c.host) + if ip = net.ParseIP(c.host); ip == nil { + return nil, fmt.Errorf("dns %s not a valid ip", c.host) + } } else { if ip, err = resolver.ResolveIPWithResolver(c.host, c.r); err != nil { return nil, fmt.Errorf("use default dns resolve failed: %w", err) @@ -58,7 +63,7 @@ func (c *client) ExchangeContext(ctx context.Context, m *D.Msg) (msg *D.Msg, err conn = tls.Client(conn, c.Client.TLSConfig) } - msg, _, err = c.Client.ExchangeWithConn(m, &D.Conn{ + msg, _, err := c.Client.ExchangeWithConn(m, &D.Conn{ Conn: conn, UDPSize: c.Client.UDPSize, TsigSecret: c.Client.TsigSecret,