[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