summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ryu/lib/packet/lldp.py9
-rw-r--r--ryu/tests/unit/packet/test_lldp.py4
2 files changed, 12 insertions, 1 deletions
diff --git a/ryu/lib/packet/lldp.py b/ryu/lib/packet/lldp.py
index 12022250..d0cae2fa 100644
--- a/ryu/lib/packet/lldp.py
+++ b/ryu/lib/packet/lldp.py
@@ -124,7 +124,7 @@ class lldp(packet_base.PacketBase):
self.tlvs[-1].tlv_type == LLDP_TLV_END)
@classmethod
- def parser(cls, buf):
+ def _parser(cls, buf):
tlvs = []
while buf:
@@ -144,6 +144,13 @@ class lldp(packet_base.PacketBase):
return lldp_pkt, None, buf
+ @classmethod
+ def parser(cls, buf):
+ try:
+ return cls._parser(buf)
+ except:
+ return None, None, buf
+
def serialize(self, payload, prev):
data = bytearray()
for tlv in self.tlvs:
diff --git a/ryu/tests/unit/packet/test_lldp.py b/ryu/tests/unit/packet/test_lldp.py
index 646af1e6..c8daf58c 100644
--- a/ryu/tests/unit/packet/test_lldp.py
+++ b/ryu/tests/unit/packet/test_lldp.py
@@ -286,6 +286,10 @@ class TestLLDPOptionalTLV(unittest.TestCase):
# End
eq_(tlvs[16].tlv_type, lldp.LLDP_TLV_END)
+ def test_parse_corrupted(self):
+ buf = self.data
+ pkt = packet.Packet(buf[:128])
+
def test_serialize(self):
pkt = packet.Packet()