]> Cypherpunks.ru repositories - pyderasn.git/blobdiff - pyderasn.py
Fix invalid DEFINED BY offset calculation for EXPL tagged objects
[pyderasn.git] / pyderasn.py
index e6c7fefab199266370c3f420d5469cf17a28a4a7..cd96a33200a1a6a7a801bc29b6aa95ca48b860cf 100755 (executable)
@@ -3875,7 +3875,10 @@ class Sequence(Obj):
                         )
                         defined_value, defined_tail = defined_spec.decode(
                             memoryview(bytes(_value)),
-                            sub_offset + value.tlen + value.llen,
+                            sub_offset + (
+                                (value.tlen + value.llen + value.expl_tlen + value.expl_llen)
+                                if value.expled else (value.tlen + value.llen)
+                            ),
                             leavemm=True,
                             decode_path=sub_sub_decode_path,
                             ctx=ctx,
@@ -3891,7 +3894,10 @@ class Sequence(Obj):
                 else:
                     defined_value, defined_tail = defined_spec.decode(
                         memoryview(bytes(value)),
-                        sub_offset + value.tlen + value.llen,
+                        sub_offset + (
+                            (value.tlen + value.llen + value.expl_tlen + value.expl_llen)
+                            if value.expled else (value.tlen + value.llen)
+                        ),
                         leavemm=True,
                         decode_path=sub_decode_path + (decode_path_defby(defined_by),),
                         ctx=ctx,