diff options
| author | Bob Halley <halley@dnspython.org> | 2005-09-02 05:22:55 +0000 |
|---|---|---|
| committer | Bob Halley <halley@dnspython.org> | 2005-09-02 05:22:55 +0000 |
| commit | 41f0d3de53790175d3b8127afe78044683f350e8 (patch) | |
| tree | 691d92fa02e0e14648742f400abaee05579ca4cb | |
| parent | dfd9ea2fdc4b3afcf2af6c5efd9dbd1c042b98da (diff) | |
| download | dnspython-41f0d3de53790175d3b8127afe78044683f350e8.tar.gz | |
parse LOC milliseconds correctly
Original author: Bob Halley <halley@dnspython.org>
Date: 2004-06-16 05:27:28
| -rw-r--r-- | ChangeLog | 6 | ||||
| -rw-r--r-- | README | 7 | ||||
| -rw-r--r-- | dns/rdtypes/ANY/LOC.py | 36 | ||||
| -rw-r--r-- | dns/version.py | 2 | ||||
| -rwxr-xr-x | setup.py | 2 | ||||
| -rw-r--r-- | tests/example | 2 | ||||
| -rw-r--r-- | tests/example1.good | 2 | ||||
| -rw-r--r-- | tests/example2.good | 2 |
8 files changed, 54 insertions, 5 deletions
@@ -1,3 +1,9 @@ +2004-06-16 Bob Halley <halley@dnspython.org> + + * dns/rdtypes/ANY/LOC.py (LOC.from_text): LOC milliseconds values + were converted incorrectly if the length of the milliseconds + string was less than 3. + 2004-06-06 Bob Halley <halley@dnspython.org> * (Version 1.3.1 released) @@ -22,7 +22,12 @@ development by continuing to employ the author :). ABOUT THIS RELEASE -This is dnspython 1.3.1. +This is dnspython 1.3.2. + +New since 1.3.1: + + The conversion of LOC milliseconds values from text to binary was + incorrect if the length of the milliseconds string was not 3. New since 1.3.0: diff --git a/dns/rdtypes/ANY/LOC.py b/dns/rdtypes/ANY/LOC.py index f30bb95..a8dda71 100644 --- a/dns/rdtypes/ANY/LOC.py +++ b/dns/rdtypes/ANY/LOC.py @@ -166,8 +166,24 @@ class LOC(dns.rdata.Rdata): t = tok.get_string() if '.' in t: (seconds, milliseconds) = t.split('.') + if not seconds.isdigit(): + raise dns.exception.SyntaxError, \ + 'bad latitude seconds value' latitude[2] = int(seconds) - latitude[3] = int(milliseconds) + if latitude[2] >= 60: + raise dns.exception.SyntaxError, \ + 'latitude seconds >= 60' + l = len(milliseconds) + if l == 0 or l > 3 or not milliseconds.isdigit(): + raise dns.exception.SyntaxError, \ + 'bad latitude milliseconds value' + if l == 1: + m = 100 + elif l == 2: + m = 10 + else: + m = 1 + latitude[3] = m * int(milliseconds) t = tok.get_string() elif t.isdigit(): latitude[2] = int(t) @@ -184,8 +200,24 @@ class LOC(dns.rdata.Rdata): t = tok.get_string() if '.' in t: (seconds, milliseconds) = t.split('.') + if not seconds.isdigit(): + raise dns.exception.SyntaxError, \ + 'bad longitude seconds value' longitude[2] = int(seconds) - longitude[3] = int(milliseconds) + if longitude[2] >= 60: + raise dns.exception.SyntaxError, \ + 'longitude seconds >= 60' + l = len(milliseconds) + if l == 0 or l > 3 or not milliseconds.isdigit(): + raise dns.exception.SyntaxError, \ + 'bad longitude milliseconds value' + if l == 1: + m = 100 + elif l == 2: + m = 10 + else: + m = 1 + longitude[3] = m * int(milliseconds) t = tok.get_string() elif t.isdigit(): longitude[2] = int(t) diff --git a/dns/version.py b/dns/version.py index f27cf4a..b2cf98a 100644 --- a/dns/version.py +++ b/dns/version.py @@ -19,7 +19,7 @@ MAJOR = 1 MINOR = 3 -MICRO = 1 +MICRO = 2 RELEASELEVEL = 0x0f SERIAL = 0 @@ -21,7 +21,7 @@ from distutils.core import setup setup( name = "dnspython", - version = "1.3.1", + version = "1.3.2", description = "DNS toolkit", long_description = \ """dnspython is a DNS toolkit for Python. It supports almost all diff --git a/tests/example b/tests/example index 4dcb0f1..27420f1 100644 --- a/tests/example +++ b/tests/example @@ -110,6 +110,8 @@ kx02 KX 10 . loc01 LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20m 2000m 20m loc02 LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20m 2000m 20m loc03 LOC 60 9 0.000 N 24 39 0.000 E 10.00m 90000000.00m 2000m 20m +loc04 LOC 60 9 1.5 N 24 39 0.000 E 10.00m 20m 2000m 20m +loc05 LOC 60 9 1.51 N 24 39 0.000 E 10.00m 20m 2000m 20m ;; ;; XXXRTH These are all obsolete and unused. dnspython doesn't implement ;; them diff --git a/tests/example1.good b/tests/example1.good index 4cd2d64..f71c6d4 100644 --- a/tests/example1.good +++ b/tests/example1.good @@ -48,6 +48,8 @@ kx02 3600 IN KX 10 . loc01 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m loc02 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m loc03 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 90000000.00m 2000.00m 20.00m +loc04 3600 IN LOC 60 9 1.500 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m +loc05 3600 IN LOC 60 9 1.510 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m mx01 3600 IN MX 10 mail mx02 3600 IN MX 10 . naptr01 3600 IN NAPTR 0 0 "" "" "" . diff --git a/tests/example2.good b/tests/example2.good index 5cf5a4c..64b6df5 100644 --- a/tests/example2.good +++ b/tests/example2.good @@ -48,6 +48,8 @@ kx02.example. 3600 IN KX 10 . loc01.example. 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m loc02.example. 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m loc03.example. 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 90000000.00m 2000.00m 20.00m +loc04.example. 3600 IN LOC 60 9 1.500 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m +loc05.example. 3600 IN LOC 60 9 1.510 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m mx01.example. 3600 IN MX 10 mail.example. mx02.example. 3600 IN MX 10 . naptr01.example. 3600 IN NAPTR 0 0 "" "" "" . |
