summaryrefslogtreecommitdiff
path: root/Lib/ipaddress.py
diff options
context:
space:
mode:
authorNick Coghlan <ncoghlan@gmail.com>2012-07-07 01:43:31 +1000
committerNick Coghlan <ncoghlan@gmail.com>2012-07-07 01:43:31 +1000
commit1d1188caa6e40428b7e9602e8d602d7365f6d5f0 (patch)
treef2308d7545479c859f97880a3bc46f924f75810c /Lib/ipaddress.py
parent9aad6ab8fa66f0c4b29a0832653c3e9ce2732fe2 (diff)
downloadcpython-1d1188caa6e40428b7e9602e8d602d7365f6d5f0.tar.gz
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.
Diffstat (limited to 'Lib/ipaddress.py')
-rw-r--r--Lib/ipaddress.py16
1 files changed, 12 insertions, 4 deletions
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