From df42ae87e887643272e02b9521886972154ebbfc Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Mon, 17 Jun 2013 20:58:55 +0900 Subject: [PATCH] packet lib: avoid exception for bogus protocol header parsing Signed-off-by: FUJITA Tomonori --- ryu/lib/packet/packet.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ryu/lib/packet/packet.py b/ryu/lib/packet/packet.py index d6aeed73..bfeed0d7 100644 --- a/ryu/lib/packet/packet.py +++ b/ryu/lib/packet/packet.py @@ -14,6 +14,7 @@ # limitations under the License. import inspect +import struct from . import packet_base from . import ethernet @@ -47,11 +48,13 @@ class Packet(object): def _parser(self, cls): while cls: - proto, cls = cls.parser(self.data[self.parsed_bytes:]) - if proto: - self.parsed_bytes += proto.length - self.protocols.append(proto) - + try: + proto, cls = cls.parser(self.data[self.parsed_bytes:]) + if proto: + self.parsed_bytes += proto.length + self.protocols.append(proto) + except struct.error: + cls = None if len(self.data) > self.parsed_bytes: self.protocols.append(self.data[self.parsed_bytes:])