From b00969a31712e4346cd0ac9f1b90f36512836c93 Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Sun, 30 Nov 2014 22:15:22 +0900 Subject: [PATCH] packet lib: don't crash with bogus ospf packet Signed-off-by: FUJITA Tomonori --- ryu/lib/packet/ospf.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ryu/lib/packet/ospf.py b/ryu/lib/packet/ospf.py index 5f49402b..a776b94d 100644 --- a/ryu/lib/packet/ospf.py +++ b/ryu/lib/packet/ospf.py @@ -612,7 +612,7 @@ class OSPFMessage(packet_base.PacketBase, _TypeDisp): self.authentication = authentication @classmethod - def parser(cls, buf): + def _parser(cls, buf): if len(buf) < cls._HDR_LEN: raise stream_parser.StreamParser.TooSmallException( '%d < %d' % (len(buf), cls._HDR_LEN)) @@ -637,6 +637,13 @@ class OSPFMessage(packet_base.PacketBase, _TypeDisp): return subcls(length, router_id, area_id, au_type, authentication, checksum, version, **kwargs), None, rest + @classmethod + def parser(cls, buf): + try: + return cls._parser(buf) + except: + return None, None, buf + def serialize(self): tail = self.serialize_tail() self.length = self._HDR_LEN + len(tail)