diff options
-rw-r--r-- | ryu/lib/packet/lldp.py | 9 | ||||
-rw-r--r-- | ryu/tests/unit/packet/test_lldp.py | 4 |
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() |