Mark Bergsma has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/355213 )
Change subject: Fix IPPrefix IPv6 string padding bug
......................................................................
Fix IPPrefix IPv6 string padding bug
When an IPv6 prefix starting or ending with '::' would be passed
to the IPPrefix constructor, self.prefix was padded incorrectly.
Change-Id: I3173d52cf67f2220b2d63fc78f1fa8761a184a4c
---
M pybal/bgp/ip.py
1 file changed, 8 insertions(+), 3 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/debs/pybal
refs/changes/13/355213/1
diff --git a/pybal/bgp/ip.py b/pybal/bgp/ip.py
index cf01579..444da9c 100644
--- a/pybal/bgp/ip.py
+++ b/pybal/bgp/ip.py
@@ -58,6 +58,12 @@
self.prefix = b"".join([chr(int(o)) for o in
prefix.split('.')])
elif self.addressfamily == AFI_INET6:
self.prefix = bytearray()
+ # If prefix starts or ends with :: then .split() returns two
+ # empty strings
+ if prefix.startswith('::'):
+ prefix = '0' + prefix
+ elif prefix.endswith('::'):
+ prefix = prefix + '0'
hexlist = prefix.split(":")
if len(hexlist) > 8:
raise ValueError()
@@ -66,8 +72,7 @@
if hexstr is not "":
self.prefix += struct.pack('!H', int(hexstr, 16))
else:
- zeroCount = 8 - len(hexlist) + 1
- self.prefix += struct.pack('!%dH' % zeroCount, *((0,)
* zeroCount))
+ self.prefix.extend('\0\0' * (8 - len(hexlist) + 1))
self.prefix = bytes(self.prefix)
self.prefixlen = int(prefixlen)
@@ -130,7 +135,7 @@
def packed(self, pad=False):
if pad:
- return self.prefix + '\0' * (self._packedMaxLen() -
len(self.prefix))
+ return self.prefix.ljust(self._packedMaxLen(), '\0')
else:
return self.prefix
--
To view, visit https://gerrit.wikimedia.org/r/355213
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3173d52cf67f2220b2d63fc78f1fa8761a184a4c
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/pybal
Gerrit-Branch: master
Gerrit-Owner: Mark Bergsma <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits