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

openSUSE Build Service is sponsored by