From: Bob Halley Date: Tue, 4 Aug 2020 13:43:44 +0000 (-0700) Subject: LOC with version not 0 is a FORMERR X-Git-Tag: v2.1.0rc1~110 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=acdc5416f5af2cb25118c873d72f06b46b858fbd;p=thirdparty%2Fdnspython.git LOC with version not 0 is a FORMERR --- diff --git a/dns/rdtypes/ANY/LOC.py b/dns/rdtypes/ANY/LOC.py index 06027346..f3e3e121 100644 --- a/dns/rdtypes/ANY/LOC.py +++ b/dns/rdtypes/ANY/LOC.py @@ -293,6 +293,8 @@ class LOC(dns.rdata.Rdata): def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): (version, size, hprec, vprec, latitude, longitude, altitude) = \ parser.get_struct("!BBBBIII") + if version != 0: + raise dns.exception.FormError("LOC version not zero") if latitude < _MIN_LATITUDE or latitude > _MAX_LATITUDE: raise dns.exception.FormError("bad latitude") if latitude > 0x80000000: diff --git a/tests/test_rdata.py b/tests/test_rdata.py index 090ca9b8..31b5a859 100644 --- a/tests/test_rdata.py +++ b/tests/test_rdata.py @@ -374,6 +374,10 @@ class RdataTestCase(unittest.TestCase): t[3], t[4], t[5]) dns.rdata.from_wire(dns.rdataclass.IN, dns.rdatatype.LOC, wire, 0, len(wire)) + with self.assertRaises(dns.exception.FormError): + wire = b'\x01' + dns.rdata.from_wire(dns.rdataclass.IN, dns.rdatatype.LOC, + wire, 0, len(wire)) def equal_wks(self, a, b): rda = dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.WKS, a)