File 0001-pyasn1-coded-ber-Fix-regressions-dealing-component-N.patch of Package python-pyasn1
From de17ad34230f154ee96173bfe8d61de2a073f1e2 Mon Sep 17 00:00:00 2001
From: Noel Power <noel.power@suse.com>
Date: Tue, 6 Jun 2023 14:11:07 +0100
Subject: [PATCH] pyasn1/coded/ber: Fix regressions dealing component == None
since commit 4f644c59bf3ec34a3a8b9cd045dfd7cd1735259f
#!/usr/bin/env python3
import sys, os.path, io, string
import base64
from pyasn1.codec.der.decoder import decode as pyasn1_der_decode
def main ():
blob = "fk8wTaADAgEFoQMCAR6kERgPMjAyMzA2MDYxMDAxMTlapQU"\
"CAwIstqYDAgEsqRUbEzx1bnNwZWNpZmllZCByZWFsbT6qCzAJoAMCAQChAjAA"
obj, _ = pyasn1_der_decode(base64.b64decode(blob))
if __name__ == '__main__':
main()
results in
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 2003, in __call__
for asn1Object in streamingDecoder:
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 1918, in __iter__
for asn1Object in self._singleItemDecoder(
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 1778, in __call__
for value in concreteDecoder.valueDecoder(
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 99, in valueDecoder
for value in decodeFun(substrate, asn1Spec, tagSet, length, **options):
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 1778, in __call__
for value in concreteDecoder.valueDecoder(
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 660, in valueDecoder
for asn1Object in self._decodeComponentsSchemaless(
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 596, in _decodeComponentsSchemaless
for component in decodeFun(substrate, **options):
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 1778, in __call__
for value in concreteDecoder.valueDecoder(
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 99, in valueDecoder
for value in decodeFun(substrate, asn1Spec, tagSet, length, **options):
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 1778, in __call__
for value in concreteDecoder.valueDecoder(
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 660, in valueDecoder
for asn1Object in self._decodeComponentsSchemaless(
File "/home/tux/pyasn1/pyasn1/codec/ber/decoder.py", line 604, in _decodeComponentsSchemaless
componentTypes.add(component.tagSet)
AttributeError: 'NoneType' object has no attribute 'tagSet'
This change restores the previous code that will avoid this error.
Signed-off-by: Noel Power <noel.power@suse.com>
---
pyasn1/codec/ber/decoder.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/pyasn1/codec/ber/decoder.py b/pyasn1/codec/ber/decoder.py
index fd80fc8..14fe460 100644
--- a/pyasn1/codec/ber/decoder.py
+++ b/pyasn1/codec/ber/decoder.py
@@ -652,7 +652,9 @@ class ConstructedPayloadDecoderBase(AbstractConstructedPayloadDecoder):
if length == -1 and component is eoo.endOfOctets:
break
-
+ if component == None:
+ # TODO: Not an error in this case?
+ break
components.append(component)
componentTypes.add(component.tagSet)
--
2.45.0