]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
LOC with version not 0 is a FORMERR
authorBob Halley <halley@dnspython.org>
Tue, 4 Aug 2020 13:43:44 +0000 (06:43 -0700)
committerBob Halley <halley@dnspython.org>
Tue, 4 Aug 2020 13:43:44 +0000 (06:43 -0700)
dns/rdtypes/ANY/LOC.py
tests/test_rdata.py

index 06027346cc1a55e07c8481f301f3fd016ff9bec5..f3e3e121141f415def96478b567425194e64f1ea 100644 (file)
@@ -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:
index 090ca9b868bb8cbe52a3cc6e2eabcdc5f7453724..31b5a85955d89d0bb197ba99977217f55e91bf0d 100644 (file)
@@ -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)