From 05273b166dc9f1a12b45e91ce7727a5ce95e4d0d Mon Sep 17 00:00:00 2001 From: mtu <maxence.tury@ssi.gouv.fr> Date: Mon, 8 Feb 2016 18:56:10 +0100 Subject: [PATCH] Restore ASN1F_element subclass instead of ASN1F_field to prevent recursion exceptions --- scapy/asn1fields.py | 4 +++- scapy/layers/x509.py | 7 ++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/scapy/asn1fields.py b/scapy/asn1fields.py index 8cc602b3..0b84c6a9 100644 --- a/scapy/asn1fields.py +++ b/scapy/asn1fields.py @@ -367,7 +367,7 @@ class ASN1F_TIME_TICKS(ASN1F_INTEGER): #### Complex ASN1 Fields #### ############################# -class ASN1F_optional(ASN1F_field): +class ASN1F_optional(ASN1F_element): def __init__(self, field, by_default=False): field.flexible_tag = False self._field = field @@ -375,6 +375,8 @@ class ASN1F_optional(ASN1F_field): self.name = field.name self.islist = field.islist self.holds_packets = field.holds_packets + def __getattr__(self, attr): + return getattr(self._field, attr) def m2i(self, pkt, s): try: return self._field.m2i(pkt, s) diff --git a/scapy/layers/x509.py b/scapy/layers/x509.py index 4bd14080..027e1d7f 100644 --- a/scapy/layers/x509.py +++ b/scapy/layers/x509.py @@ -167,7 +167,7 @@ class X509_RDN(ASN1_Packet): class X509_OtherName(ASN1_Packet): ASN1_codec = ASN1_Codecs.BER ASN1_root = ASN1F_SEQUENCE( - ASN1F_OID("type-id", "0"), + ASN1F_OID("type_id", "0"), ASN1F_CHOICE("value", None, ASN1F_IA5_STRING, ASN1F_ISO646_STRING, ASN1F_BMP_STRING, ASN1F_UTF8_STRING, @@ -225,11 +225,8 @@ class X509_RegisteredID(ASN1_Packet): ASN1_root = ASN1F_OID("registeredID", "") class X509_GeneralName(ASN1_Packet): - dirName = X509_DirectoryName() - dirName.overload_fields[hash(X509_DirectoryName)] = {"exp": 0xa4, - "imp": None} ASN1_codec = ASN1_Codecs.BER - ASN1_root = ASN1F_CHOICE("generalName", dirName, + ASN1_root = ASN1F_CHOICE("generalName", X509_DirectoryName(), ASN1F_PACKET("otherName", None, X509_OtherName, implicit_tag=0xa0), ASN1F_PACKET("rfc822Name", None, X509_RFC822Name, -- GitLab