aboutsummaryrefslogtreecommitdiff
path: root/pyasn1/codec
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-10-10 13:22:50 +0200
committerIlya Etingof <etingof@gmail.com>2017-10-10 13:22:50 +0200
commitd83c99d986376e1a7d7a200132dd6fc6d12bdcd5 (patch)
treeef47751bbf427fcbc60885191103a560aaf13f29 /pyasn1/codec
parent368d2efaf46a863f8c75ddf9878a5559f246a00a (diff)
downloadpyasn1-d83c99d986376e1a7d7a200132dd6fc6d12bdcd5.tar.gz
do not attempt to decode optional open types
Diffstat (limited to 'pyasn1/codec')
-rw-r--r--pyasn1/codec/ber/decoder.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/pyasn1/codec/ber/decoder.py b/pyasn1/codec/ber/decoder.py
index b1863ab..f2c4e4a 100644
--- a/pyasn1/codec/ber/decoder.py
+++ b/pyasn1/codec/ber/decoder.py
@@ -561,6 +561,9 @@ class UniversalConstructedTypeDecoder(AbstractConstructedDecoder):
if not namedType.openType:
continue
+ if namedType.isOptional and not asn1Object.getComponentByPosition(idx).isValue:
+ continue
+
governingValue = asn1Object.getComponentByName(
namedType.openType.name
)
@@ -697,6 +700,9 @@ class UniversalConstructedTypeDecoder(AbstractConstructedDecoder):
if not namedType.openType:
continue
+ if namedType.isOptional and not asn1Object.getComponentByPosition(idx).isValue:
+ continue
+
governingValue = asn1Object.getComponentByName(
namedType.openType.name
)