diff --git a/scapy/asn1/ber.py b/scapy/asn1/ber.py index b23184d6ce07c5554bf0420b0e5085f6df3993fe..3a51187bdbdc671048a2e375007a20f21e543c05 100644 --- a/scapy/asn1/ber.py +++ b/scapy/asn1/ber.py @@ -90,6 +90,8 @@ def BER_num_enc(l, size=1): size -= 1 return "".join([chr(k) for k in x]) def BER_num_dec(s, cls_id=0): + if len(s) == 0: + raise BER_Decoding_Error("BER_num_dec: got empty string", remaining=s) x = cls_id for i, c in enumerate(s): c = ord(c) @@ -445,7 +447,7 @@ class BERcodec_IPADDRESS(BERcodec_STRING): try: ipaddr_ascii = inet_ntoa(s) except Exception: - raise BER_Decoding_Error("IP address could not be decoded", decoded=obj) + raise BER_Decoding_Error("IP address could not be decoded", remaining=s) return cls.asn1_object(ipaddr_ascii), t class BERcodec_COUNTER32(BERcodec_INTEGER): diff --git a/scapy/layers/inet6.py b/scapy/layers/inet6.py index 4fa9314767f1facc52f3c2c3de2a964b8a4f564b..bbfc1c8d820aaf1e438a2b9e530cbdda2ac0891b 100644 --- a/scapy/layers/inet6.py +++ b/scapy/layers/inet6.py @@ -366,7 +366,7 @@ class _IPv6GuessPayload: def default_payload_class(self,p): if self.nh == 58: # ICMPv6 t = ord(p[0]) - if len(p) > 2 and t == 139 or t == 140: # Node Info Query + if len(p) > 2 and (t == 139 or t == 140): # Node Info Query return _niquery_guesser(p) if len(p) >= icmp6typesminhdrlen.get(t, sys.maxint): # Other ICMPv6 messages return get_cls(icmp6typescls.get(t,"Raw"), "Raw")