diff --git a/scapy/asn1/mib.py b/scapy/asn1/mib.py index b3da5a340f8b3f53fc21551f3a406297b9a88ba3..bd29da91a5536c53b1ddd8e8be6e8099fa8ff365 100644 --- a/scapy/asn1/mib.py +++ b/scapy/asn1/mib.py @@ -15,7 +15,7 @@ from scapy.utils import do_graph _mib_re_integer = re.compile("^[0-9]+$") _mib_re_both = re.compile("^([a-zA-Z_][a-zA-Z0-9_-]*)\(([0-9]+)\)$") -_mib_re_oiddecl = re.compile("$\s*([a-zA-Z0-9_-]+)\s+OBJECT[^:]+::=\s*\{([^\}]+)\}",re.M) +_mib_re_oiddecl = re.compile("$\s*([a-zA-Z0-9_-]+)\s+OBJECT([^:\{\}]|\{[^:]+\})+::=\s*\{([^\}]+)\}",re.M) _mib_re_strings = re.compile('"[^"]*"') _mib_re_comments = re.compile('--.*(\r|\n)') @@ -118,7 +118,8 @@ def load_mib(filenames): text = f.read() cleantext = " ".join(_mib_re_strings.split(" ".join(_mib_re_comments.split(text)))) for m in _mib_re_oiddecl.finditer(cleantext): - ident,oid = m.groups() + gr = m.groups() + ident,oid = gr[0],gr[-1] ident=fixname(ident) oid = oid.split() for i in range(len(oid)): diff --git a/scapy/fields.py b/scapy/fields.py index 3e479d985779381904d628d3711b4913d91afaa3..cb8bbbf49fc01c49e5147c1e40af14b062485f16 100644 --- a/scapy/fields.py +++ b/scapy/fields.py @@ -334,6 +334,8 @@ class StrField(Field): def i2m(self, pkt, x): if x is None: x = "" + elif type(x) is not str: + x=str(x) return x def addfield(self, pkt, s, val): return s+self.i2m(pkt, val) diff --git a/scapy/layers/dot11.py b/scapy/layers/dot11.py index 3382940446b1a751838f46f32365c0d3720a088a..6e67c71aee1e5f14aa7d076634fb4da835099463 100644 --- a/scapy/layers/dot11.py +++ b/scapy/layers/dot11.py @@ -382,7 +382,7 @@ iwconfig wlan0 mode managed function_name = "airpwn" filter = None - def parse_options(iffrom, ifto, replace, pattern="", ignorepattern=""): + def parse_options(self, iffrom, ifto, replace, pattern="", ignorepattern=""): self.iffrom = iffrom self.ifto = ifto ptrn = re.compile(pattern)