From f9a96be0698429eeea5a5efb89b31e8f6deffffc Mon Sep 17 00:00:00 2001 From: Bob Halley Date: Fri, 2 Dec 2016 07:22:23 -0800 Subject: [PATCH] Slighly improve ECS masking. --- dns/edns.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dns/edns.py b/dns/edns.py index 83b9be68..3a668826 100644 --- a/dns/edns.py +++ b/dns/edns.py @@ -176,10 +176,10 @@ class ECSOption(Option): # Truncate to srclen and pad to the end of the last octet needed # See RFC section 6 self.addrdata = addrdata[:nbytes] - last = chr(ord(self.addrdata[-1:]) & (0xff << srclen % 8)) - if sys.version_info >= (3,): - last = last.encode('latin1') - self.addrdata = self.addrdata[:-1] + last + nbits = srclen % 8 + if nbits != 0: + last = struct.pack('B', ord(self.addrdata[-1:]) & (0xff << nbits)) + self.addrdata = self.addrdata[:-1] + last def to_text(self): return "ECS %s/%s scope/%s" % (self.address, self.srclen, -- 2.47.3