[Git][NTPsec/ntpsec][master] Removed incorrect null-terminated search range list functionality
Ian Bruene
gitlab at mg.gitlab.com
Tue Nov 14 16:28:41 UTC 2017
Ian Bruene pushed to branch master at NTPsec / ntpsec
Commits:
99ee24ee by Ian Bruene at 2017-11-14T10:28:33-06:00
Removed incorrect null-terminated search range list functionality
- - - - -
2 changed files:
- pylib/agentx.py
- tests/pylib/test_agentx.py
Changes:
=====================================
pylib/agentx.py
=====================================
--- a/pylib/agentx.py
+++ b/pylib/agentx.py
@@ -358,13 +358,12 @@ class UnregisterPDU(RegisterPDU):
def decode_xGetPDU(data, header):
flags = header["flags"]
context, data = decode_context(data, header)
+ oidranges = decode_searchrange_list(data, header)
if header["type"] == PDU_GET_NEXT:
- oidranges = decode_searchrange_list(data, header)
result = GetNextPDU(flags["bigEndian"], header["session_id"],
header["transaction_id"], header["packet_id"],
oidranges, context)
else:
- oidranges, data = decode_searchrange_list_nullterm(data, header)
result = GetPDU(flags["bigEndian"], header["session_id"],
header["transaction_id"], header["packet_id"],
oidranges, context)
@@ -376,7 +375,6 @@ class GetPDU(AgentXPDU):
AgentXPDU.__init__(self, PDU_GET,
bigEndian, sID, tactID, pktID, True, context)
self.oidranges = oidranges
- self._nullTerm = True
def __eq__(self, other):
if AgentXPDU.__eq__(self, other) is not True:
@@ -387,8 +385,7 @@ class GetPDU(AgentXPDU):
def encode(self):
contextP, payload = encode_context(self.bigEndian, self.context)
- payload += encode_searchrange_list(self.bigEndian,
- self.oidranges, self._nullTerm)
+ payload += encode_searchrange_list(self.bigEndian, self.oidranges)
header = encode_pduheader(self.pduType, False, False, False,
contextP, self.bigEndian,
self.sessionID, self.transactionID,
@@ -401,7 +398,6 @@ class GetNextPDU(GetPDU):
GetPDU.__init__(self, bigEndian, sID, tactID, pktID,
oidranges, context)
self.pduType = PDU_GET_NEXT
- self._nullTerm = False
def decode_GetBulkPDU(data, header):
@@ -441,8 +437,7 @@ class GetBulkPDU(AgentXPDU):
endianToken = getendian(self.bigEndian)
contextP, payload = encode_context(self.bigEndian, self.context)
payload += struct.pack(endianToken + "HH", self.nonReps, self.maxReps)
- payload += encode_searchrange_list(self.bigEndian,
- self.oidranges, False)
+ payload += encode_searchrange_list(self.bigEndian, self.oidranges)
header = encode_pduheader(self.pduType, False, False, False,
contextP, self.bigEndian,
self.sessionID, self.transactionID,
@@ -1140,13 +1135,10 @@ class SearchRange:
return startOIDstr + endOIDstr
-def encode_searchrange_list(bigEndian, searchranges, nullTerminate=False):
+def encode_searchrange_list(bigEndian, searchranges):
encoded = []
for sran in searchranges:
encoded.append(sran.encode(bigEndian))
- if nullTerminate:
- noid = OID(())
- encoded.append(noid.encode(bigEndian))
encoded = b"".join(encoded)
return encoded
@@ -1159,17 +1151,6 @@ def decode_searchrange_list(data, header): # Cannot handle extra data
return tuple(oidranges)
-def decode_searchrange_list_nullterm(data, header):
- oidranges = []
- while len(data) > 0:
- one, data = decode_OID(data, header)
- if one.isNull():
- break
- two, data = decode_OID(data, header)
- oidranges.append(SearchRange(one, two))
- return tuple(oidranges), data
-
-
def encode_varbindlist(bigEndian, varbinds):
payload = b""
for varbind in varbinds:
=====================================
tests/pylib/test_agentx.py
=====================================
--- a/tests/pylib/test_agentx.py
+++ b/tests/pylib/test_agentx.py
@@ -449,36 +449,33 @@ class TestNtpclientsNtpsnmpd(unittest.TestCase):
self.assertEqual(nullPkt_str,
b"\x01\x05\x10\x00"
b"\x00\x00\x00\x01\x00\x00\x00\x02"
- b"\x00\x00\x00\x03\x00\x00\x00\x04"
- b"\x00\x00\x00\x00")
+ b"\x00\x00\x00\x03\x00\x00\x00\x00")
# Test encode, full packet
fullPkt_str = fullPkt.encode()
self.assertEqual(fullPkt_str,
b"\x01\x05\x18\x00"
b"\x00\x00\x00\x01\x00\x00\x00\x02"
- b"\x00\x00\x00\x03\x00\x00\x00\x44"
+ b"\x00\x00\x00\x03\x00\x00\x00\x40"
b"\x00\x00\x00\x04blah"
b"\x03\x00\x00\x00\x00\x00\x00\x01"
b"\x00\x00\x00\x02\x00\x00\x00\x03"
b"\x03\x00\x00\x00\x00\x00\x00\x01"
b"\x00\x00\x00\x02\x00\x00\x00\x05"
b"\x02\x00\x01\x00\x00\x00\x00\x0A\x00\x00\x00\x14"
- b"\x02\x00\x00\x00\x00\x00\x00\x1E\x00\x00\x00\x28"
- b"\x00\x00\x00\x00")
+ b"\x02\x00\x00\x00\x00\x00\x00\x1E\x00\x00\x00\x28")
# Test encode, full packet, little endian
fullPkt_LE_str = fullPkt_LE.encode()
self.assertEqual(fullPkt_LE_str,
b"\x01\x05\x08\x00"
b"\x01\x00\x00\x00\x02\x00\x00\x00"
- b"\x03\x00\x00\x00\x44\x00\x00\x00"
+ b"\x03\x00\x00\x00\x40\x00\x00\x00"
b"\x04\x00\x00\x00blah"
b"\x03\x00\x00\x00\x01\x00\x00\x00"
b"\x02\x00\x00\x00\x03\x00\x00\x00"
b"\x03\x00\x00\x00\x01\x00\x00\x00"
b"\x02\x00\x00\x00\x05\x00\x00\x00"
b"\x02\x00\x01\x00\x0A\x00\x00\x00\x14\x00\x00\x00"
- b"\x02\x00\x00\x00\x1E\x00\x00\x00\x28\x00\x00\x00"
- b"\x00\x00\x00\x00")
+ b"\x02\x00\x00\x00\x1E\x00\x00\x00\x28\x00\x00\x00")
# Test decoding, null packet
header, body = slicedata(nullPkt_str, 20)
header = decode_pduheader(header)
@@ -1828,15 +1825,6 @@ class TestNtpclientsNtpsnmpd(unittest.TestCase):
b"\x02\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00"
b"\x02\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00"
b"\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00")
- # Test, null terminated
- self.assertEqual(enc(True, (srch((1, 2), (1, 2), True),
- srch((2, 3), (3, 4))),
- nullTerminate=True),
- b"\x02\x00\x01\x00\x00\x00\x00\x01\x00\x00\x00\x02"
- b"\x02\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02"
- b"\x02\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03"
- b"\x02\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04"
- b"\x00\x00\x00\x00")
def test_decode_searchrange_list(self):
dec = ntp.agentx.decode_searchrange_list
@@ -1867,37 +1855,6 @@ class TestNtpclientsNtpsnmpd(unittest.TestCase):
(srch((1, 2), (1, 2), True),
srch((2, 3), (3, 4), False)))
- def test_decode_searchrange_list_nullterm(self):
- dec = ntp.agentx.decode_searchrange_list_nullterm
- srch = ntp.agentx.SearchRange
-
- # Decode
- self.assertEqual(dec(b"\x02\x00\x01\x00"
- b"\x00\x00\x00\x01\x00\x00\x00\x02"
- b"\x02\x00\x00\x00"
- b"\x00\x00\x00\x01\x00\x00\x00\x02"
- b"\x02\x00\x00\x00"
- b"\x00\x00\x00\x02\x00\x00\x00\x03"
- b"\x02\x00\x00\x00"
- b"\x00\x00\x00\x03\x00\x00\x00\x04",
- standardFlags),
- ((srch((1, 2), (1, 2), True),
- srch((2, 3), (3, 4), False)),
- b""))
- # Test, little endian
- self.assertEqual(dec(b"\x02\x00\x01\x00"
- b"\x01\x00\x00\x00\x02\x00\x00\x00"
- b"\x02\x00\x00\x00"
- b"\x01\x00\x00\x00\x02\x00\x00\x00"
- b"\x02\x00\x00\x00"
- b"\x02\x00\x00\x00\x03\x00\x00\x00"
- b"\x02\x00\x00\x00"
- b"\x03\x00\x00\x00\x04\x00\x00\x00"
- b"\x00\x00\x00\x00" + extraData, lilEndianFlags),
- ((srch((1, 2), (1, 2), True),
- srch((2, 3), (3, 4), False)),
- extraData))
-
def test_encode_octetstr(self):
enc = ntp.agentx.encode_octetstr
dec = ntp.agentx.decode_octetstr
@@ -2294,8 +2251,7 @@ class TestNtpclientsNtpsnmpd(unittest.TestCase):
# Test get
self.assertEqual(f(b"\x01\x05\x10\x00"
b"\x00\x00\x00\x01\x00\x00\x00\x02"
- b"\x00\x00\x00\x03\x00\x00\x00\x04"
- b"\x00\x00\x00\x00"),
+ b"\x00\x00\x00\x03\x00\x00\x00\x00"),
(x.GetPDU(True, 1, 2, 3, ()),
b""))
# Test get next
View it on GitLab: https://gitlab.com/NTPsec/ntpsec/commit/99ee24ee6fa98b0fdc385d53ab9e57241cf2ac21
---
View it on GitLab: https://gitlab.com/NTPsec/ntpsec/commit/99ee24ee6fa98b0fdc385d53ab9e57241cf2ac21
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ntpsec.org/pipermail/vc/attachments/20171114/b6389657/attachment.html>
More information about the vc
mailing list