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