diff options
author | Bob Halley <halley@dnspython.org> | 2013-04-26 13:03:42 +0100 |
---|---|---|
committer | Bob Halley <halley@dnspython.org> | 2013-04-26 13:03:42 +0100 |
commit | daa371c882ae009ff023175f6e74c572ff2a6e0f (patch) | |
tree | bca3832cd5472c7e8a32a0201339b8a3e1a14ebc | |
parent | 3950b2a88e7204a874c0a72aae120355bb755db9 (diff) | |
download | dnspython-daa371c882ae009ff023175f6e74c572ff2a6e0f.tar.gz |
In dns.ipv6.inet_ntoa(), do not use :: to shorten just one 16-bit 0 field
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | dns/ipv6.py | 2 | ||||
-rw-r--r-- | tests/ntoaaton.py | 6 |
3 files changed, 14 insertions, 1 deletions
@@ -1,3 +1,10 @@ +2013-04-26 Bob Halley <halley@dnspython.org> + + * dns/ipv6.py (inet_ntoa): We now comply with RFC 5952 section + 5.2.2, by *not* using the :: syntax to shorten just one 16-bit + field. Thanks to David Waitzman for reporting the bug and + suggesting the fix. + 2012-09-25 Sean Leach * added set_flags() method to dns.resolver.Resolver diff --git a/dns/ipv6.py b/dns/ipv6.py index 69db34a..1ab00da 100644 --- a/dns/ipv6.py +++ b/dns/ipv6.py @@ -72,7 +72,7 @@ def inet_ntoa(address): if current_len > best_len: best_start = start best_len = current_len - if best_len > 0: + if best_len > 1: if best_start == 0 and \ (best_len == 6 or best_len == 5 and chunks[5] == 'ffff'): diff --git a/tests/ntoaaton.py b/tests/ntoaaton.py index 9d8bedd..e93de2d 100644 --- a/tests/ntoaaton.py +++ b/tests/ntoaaton.py @@ -193,5 +193,11 @@ class NtoAAtoNTestCase(unittest.TestCase): for addr in addrs: self.failUnlessRaises(dns.exception.SyntaxError, make_bad(addr)) + def test_rfc5952_section_4_2_2(self): + addr = '2001:db8:0:1:1:1:1:1' + b1 = aton6(addr) + t1 = ntoa6(b1) + self.failUnless(t1 == addr) + if __name__ == '__main__': unittest.main() |