From 1d1188caa6e40428b7e9602e8d602d7365f6d5f0 Mon Sep 17 00:00:00 2001 From: Nick Coghlan Date: Sat, 7 Jul 2012 01:43:31 +1000 Subject: Issue 14814: Eliminate bytes warnings from ipaddress by correctly throwing an exception early when given bytes data of the wrong length. Also removes 2.x backwards compatibility code from associated tests. --- Lib/ipaddress.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'Lib/ipaddress.py') diff --git a/Lib/ipaddress.py b/Lib/ipaddress.py index 352c9b87c4..9a1ba728f2 100644 --- a/Lib/ipaddress.py +++ b/Lib/ipaddress.py @@ -1250,7 +1250,9 @@ class IPv4Address(_BaseV4, _BaseAddress): return # Constructing from a packed address - if isinstance(address, bytes) and len(address) == 4: + if isinstance(address, bytes): + if len(address) != 4: + raise AddressValueError(address) self._ip = struct.unpack('!I', address)[0] return @@ -1379,7 +1381,9 @@ class IPv4Network(_BaseV4, _BaseNetwork): _BaseNetwork.__init__(self, address) # Constructing from a packed address - if isinstance(address, bytes) and len(address) == 4: + if isinstance(address, bytes): + if len(address) != 4: + raise AddressValueError(address) self.network_address = IPv4Address( struct.unpack('!I', address)[0]) self._prefixlen = self._max_prefixlen @@ -1864,7 +1868,9 @@ class IPv6Address(_BaseV6, _BaseAddress): return # Constructing from a packed address - if isinstance(address, bytes) and len(address) == 16: + if isinstance(address, bytes): + if len(address) != 16: + raise AddressValueError(address) tmp = struct.unpack('!QQ', address) self._ip = (tmp[0] << 64) | tmp[1] return @@ -1996,7 +2002,9 @@ class IPv6Network(_BaseV6, _BaseNetwork): return # Constructing from a packed address - if isinstance(address, bytes) and len(address) == 16: + if isinstance(address, bytes): + if len(address) != 16: + raise AddressValueError(address) tmp = struct.unpack('!QQ', address) self.network_address = IPv6Address((tmp[0] << 64) | tmp[1]) self._prefixlen = self._max_prefixlen -- cgit v1.2.1