@@ -1846,6 +1846,17 @@ func TestCVE202133195(t *testing.T) {
18461846 Target : dnsmessage .MustNewName ("<html>.golang.org." ),
18471847 },
18481848 },
1849+ dnsmessage.Resource {
1850+ Header : dnsmessage.ResourceHeader {
1851+ Name : n ,
1852+ Type : dnsmessage .TypeSRV ,
1853+ Class : dnsmessage .ClassINET ,
1854+ Length : 4 ,
1855+ },
1856+ Body : & dnsmessage.SRVResource {
1857+ Target : dnsmessage .MustNewName ("good.golang.org." ),
1858+ },
1859+ },
18491860 )
18501861 case dnsmessage .TypeMX :
18511862 r .Answers = append (r .Answers ,
@@ -1860,6 +1871,17 @@ func TestCVE202133195(t *testing.T) {
18601871 MX : dnsmessage .MustNewName ("<html>.golang.org." ),
18611872 },
18621873 },
1874+ dnsmessage.Resource {
1875+ Header : dnsmessage.ResourceHeader {
1876+ Name : dnsmessage .MustNewName ("good.golang.org." ),
1877+ Type : dnsmessage .TypeMX ,
1878+ Class : dnsmessage .ClassINET ,
1879+ Length : 4 ,
1880+ },
1881+ Body : & dnsmessage.MXResource {
1882+ MX : dnsmessage .MustNewName ("good.golang.org." ),
1883+ },
1884+ },
18631885 )
18641886 case dnsmessage .TypeNS :
18651887 r .Answers = append (r .Answers ,
@@ -1874,6 +1896,17 @@ func TestCVE202133195(t *testing.T) {
18741896 NS : dnsmessage .MustNewName ("<html>.golang.org." ),
18751897 },
18761898 },
1899+ dnsmessage.Resource {
1900+ Header : dnsmessage.ResourceHeader {
1901+ Name : dnsmessage .MustNewName ("good.golang.org." ),
1902+ Type : dnsmessage .TypeNS ,
1903+ Class : dnsmessage .ClassINET ,
1904+ Length : 4 ,
1905+ },
1906+ Body : & dnsmessage.NSResource {
1907+ NS : dnsmessage .MustNewName ("good.golang.org." ),
1908+ },
1909+ },
18771910 )
18781911 case dnsmessage .TypePTR :
18791912 r .Answers = append (r .Answers ,
@@ -1888,6 +1921,17 @@ func TestCVE202133195(t *testing.T) {
18881921 PTR : dnsmessage .MustNewName ("<html>.golang.org." ),
18891922 },
18901923 },
1924+ dnsmessage.Resource {
1925+ Header : dnsmessage.ResourceHeader {
1926+ Name : dnsmessage .MustNewName ("good.golang.org." ),
1927+ Type : dnsmessage .TypePTR ,
1928+ Class : dnsmessage .ClassINET ,
1929+ Length : 4 ,
1930+ },
1931+ Body : & dnsmessage.PTRResource {
1932+ PTR : dnsmessage .MustNewName ("good.golang.org." ),
1933+ },
1934+ },
18911935 )
18921936 }
18931937 return r , nil
@@ -1903,59 +1947,139 @@ func TestCVE202133195(t *testing.T) {
19031947 defer func (orig string ) { testHookHostsPath = orig }(testHookHostsPath )
19041948 testHookHostsPath = "testdata/hosts"
19051949
1906- _ , err := r .LookupCNAME (context .Background (), "golang.org" )
1907- if expected := "lookup golang.org: CNAME target is invalid" ; err == nil || err .Error () != expected {
1908- t .Errorf ("Resolver.LookupCNAME returned unexpected error, got %q, want %q" , err , expected )
1909- }
1910- _ , err = LookupCNAME ("golang.org" )
1911- if expected := "lookup golang.org: CNAME target is invalid" ; err == nil || err .Error () != expected {
1912- t .Errorf ("LookupCNAME returned unexpected error, got %q, want %q" , err , expected )
1913- }
1914-
1915- _ , _ , err = r .LookupSRV (context .Background (), "target" , "tcp" , "golang.org" )
1916- if expected := "lookup golang.org: SRV target is invalid" ; err == nil || err .Error () != expected {
1917- t .Errorf ("Resolver.LookupSRV returned unexpected error, got %q, want %q" , err , expected )
1918- }
1919- _ , _ , err = LookupSRV ("target" , "tcp" , "golang.org" )
1920- if expected := "lookup golang.org: SRV target is invalid" ; err == nil || err .Error () != expected {
1921- t .Errorf ("LookupSRV returned unexpected error, got %q, want %q" , err , expected )
1922- }
1923-
1924- _ , _ , err = r .LookupSRV (context .Background (), "hdr" , "tcp" , "golang.org." )
1925- if expected := "lookup golang.org.: SRV header name is invalid" ; err == nil || err .Error () != expected {
1926- t .Errorf ("Resolver.LookupSRV returned unexpected error, got %q, want %q" , err , expected )
1927- }
1928- _ , _ , err = LookupSRV ("hdr" , "tcp" , "golang.org." )
1929- if expected := "lookup golang.org.: SRV header name is invalid" ; err == nil || err .Error () != expected {
1930- t .Errorf ("LookupSRV returned unexpected error, got %q, want %q" , err , expected )
1931- }
1932-
1933- _ , err = r .LookupMX (context .Background (), "golang.org" )
1934- if expected := "lookup golang.org: MX target is invalid" ; err == nil || err .Error () != expected {
1935- t .Errorf ("Resolver.LookupMX returned unexpected error, got %q, want %q" , err , expected )
1936- }
1937- _ , err = LookupMX ("golang.org" )
1938- if expected := "lookup golang.org: MX target is invalid" ; err == nil || err .Error () != expected {
1939- t .Errorf ("LookupMX returned unexpected error, got %q, want %q" , err , expected )
1950+ tests := []struct {
1951+ name string
1952+ f func (* testing.T )
1953+ }{
1954+ {
1955+ name : "CNAME" ,
1956+ f : func (t * testing.T ) {
1957+ expectedErr := & DNSError {Err : errMalformedDNSRecordsDetail , Name : "golang.org" }
1958+ _ , err := r .LookupCNAME (context .Background (), "golang.org" )
1959+ if err .Error () != expectedErr .Error () {
1960+ t .Fatalf ("unexpected error: %s" , err )
1961+ }
1962+ _ , err = LookupCNAME ("golang.org" )
1963+ if err .Error () != expectedErr .Error () {
1964+ t .Fatalf ("unexpected error: %s" , err )
1965+ }
1966+ },
1967+ },
1968+ {
1969+ name : "SRV (bad record)" ,
1970+ f : func (t * testing.T ) {
1971+ expected := []* SRV {
1972+ {
1973+ Target : "good.golang.org." ,
1974+ },
1975+ }
1976+ expectedErr := & DNSError {Err : errMalformedDNSRecordsDetail , Name : "golang.org" }
1977+ _ , records , err := r .LookupSRV (context .Background (), "target" , "tcp" , "golang.org" )
1978+ if err .Error () != expectedErr .Error () {
1979+ t .Fatalf ("unexpected error: %s" , err )
1980+ }
1981+ if ! reflect .DeepEqual (records , expected ) {
1982+ t .Error ("Unexpected record set" )
1983+ }
1984+ _ , records , err = LookupSRV ("target" , "tcp" , "golang.org" )
1985+ if err .Error () != expectedErr .Error () {
1986+ t .Errorf ("unexpected error: %s" , err )
1987+ }
1988+ if ! reflect .DeepEqual (records , expected ) {
1989+ t .Error ("Unexpected record set" )
1990+ }
1991+ },
1992+ },
1993+ {
1994+ name : "SRV (bad header)" ,
1995+ f : func (t * testing.T ) {
1996+ _ , _ , err := r .LookupSRV (context .Background (), "hdr" , "tcp" , "golang.org." )
1997+ if expected := "lookup golang.org.: SRV header name is invalid" ; err == nil || err .Error () != expected {
1998+ t .Errorf ("Resolver.LookupSRV returned unexpected error, got %q, want %q" , err , expected )
1999+ }
2000+ _ , _ , err = LookupSRV ("hdr" , "tcp" , "golang.org." )
2001+ if expected := "lookup golang.org.: SRV header name is invalid" ; err == nil || err .Error () != expected {
2002+ t .Errorf ("LookupSRV returned unexpected error, got %q, want %q" , err , expected )
2003+ }
2004+ },
2005+ },
2006+ {
2007+ name : "MX" ,
2008+ f : func (t * testing.T ) {
2009+ expected := []* MX {
2010+ {
2011+ Host : "good.golang.org." ,
2012+ },
2013+ }
2014+ expectedErr := & DNSError {Err : errMalformedDNSRecordsDetail , Name : "golang.org" }
2015+ records , err := r .LookupMX (context .Background (), "golang.org" )
2016+ if err .Error () != expectedErr .Error () {
2017+ t .Fatalf ("unexpected error: %s" , err )
2018+ }
2019+ if ! reflect .DeepEqual (records , expected ) {
2020+ t .Error ("Unexpected record set" )
2021+ }
2022+ records , err = LookupMX ("golang.org" )
2023+ if err .Error () != expectedErr .Error () {
2024+ t .Fatalf ("unexpected error: %s" , err )
2025+ }
2026+ if ! reflect .DeepEqual (records , expected ) {
2027+ t .Error ("Unexpected record set" )
2028+ }
2029+ },
2030+ },
2031+ {
2032+ name : "NS" ,
2033+ f : func (t * testing.T ) {
2034+ expected := []* NS {
2035+ {
2036+ Host : "good.golang.org." ,
2037+ },
2038+ }
2039+ expectedErr := & DNSError {Err : errMalformedDNSRecordsDetail , Name : "golang.org" }
2040+ records , err := r .LookupNS (context .Background (), "golang.org" )
2041+ if err .Error () != expectedErr .Error () {
2042+ t .Fatalf ("unexpected error: %s" , err )
2043+ }
2044+ if ! reflect .DeepEqual (records , expected ) {
2045+ t .Error ("Unexpected record set" )
2046+ }
2047+ records , err = LookupNS ("golang.org" )
2048+ if err .Error () != expectedErr .Error () {
2049+ t .Fatalf ("unexpected error: %s" , err )
2050+ }
2051+ if ! reflect .DeepEqual (records , expected ) {
2052+ t .Error ("Unexpected record set" )
2053+ }
2054+ },
2055+ },
2056+ {
2057+ name : "Addr" ,
2058+ f : func (t * testing.T ) {
2059+ expected := []string {"good.golang.org." }
2060+ expectedErr := & DNSError {Err : errMalformedDNSRecordsDetail , Name : "192.0.2.42" }
2061+ records , err := r .LookupAddr (context .Background (), "192.0.2.42" )
2062+ if err .Error () != expectedErr .Error () {
2063+ t .Fatalf ("unexpected error: %s" , err )
2064+ }
2065+ if ! reflect .DeepEqual (records , expected ) {
2066+ t .Error ("Unexpected record set" )
2067+ }
2068+ records , err = LookupAddr ("192.0.2.42" )
2069+ if err .Error () != expectedErr .Error () {
2070+ t .Fatalf ("unexpected error: %s" , err )
2071+ }
2072+ if ! reflect .DeepEqual (records , expected ) {
2073+ t .Error ("Unexpected record set" )
2074+ }
2075+ },
2076+ },
19402077 }
19412078
1942- _ , err = r .LookupNS (context .Background (), "golang.org" )
1943- if expected := "lookup golang.org: NS target is invalid" ; err == nil || err .Error () != expected {
1944- t .Errorf ("Resolver.LookupNS returned unexpected error, got %q, want %q" , err , expected )
1945- }
1946- _ , err = LookupNS ("golang.org" )
1947- if expected := "lookup golang.org: NS target is invalid" ; err == nil || err .Error () != expected {
1948- t .Errorf ("LookupNS returned unexpected error, got %q, want %q" , err , expected )
2079+ for _ , tc := range tests {
2080+ t .Run (tc .name , tc .f )
19492081 }
19502082
1951- _ , err = r .LookupAddr (context .Background (), "192.0.2.42" )
1952- if expected := "lookup 192.0.2.42: PTR target is invalid" ; err == nil || err .Error () != expected {
1953- t .Errorf ("Resolver.LookupAddr returned unexpected error, got %q, want %q" , err , expected )
1954- }
1955- _ , err = LookupAddr ("192.0.2.42" )
1956- if expected := "lookup 192.0.2.42: PTR target is invalid" ; err == nil || err .Error () != expected {
1957- t .Errorf ("LookupAddr returned unexpected error, got %q, want %q" , err , expected )
1958- }
19592083}
19602084
19612085func TestNullMX (t * testing.T ) {
0 commit comments