Skip to content

fix two unbounded-loop hangs#201

Open
hampushellsberg-dev wants to merge 1 commit into
eerimoq:masterfrom
hampushellsberg-dev:fix-unbounded-loops
Open

fix two unbounded-loop hangs#201
hampushellsberg-dev wants to merge 1 commit into
eerimoq:masterfrom
hampushellsberg-dev:fix-unbounded-loops

Conversation

@hampushellsberg-dev

Copy link
Copy Markdown

PR re-issue using correct master branch

Add cycle detection to resolve_type_name and resolve_type_descriptor in compiler.py so that circular tagged types raise CompileError instead of looping forever.

Add a missing check_decode_error call in ArrayType.decode_content (der.py) so that malformed SEQUENCE OF / SET OF data raises DecodeTagError instead of looping forever.

@eerimoq

eerimoq commented May 26, 2026

Copy link
Copy Markdown
Owner

add tests

Add cycle detection to resolve_type_name and resolve_type_descriptor
in compiler.py so that circular tagged types raise CompileError
instead of looping forever.

Add a missing check_decode_error call in ArrayType.decode_content
(der.py) so that malformed SEQUENCE OF / SET OF data raises
DecodeTagError instead of looping forever.

Change-Id: I932de2937f9c68b14e99b3eddc9e919d641e675b
@hampushellsberg-dev

Copy link
Copy Markdown
Author

tests added

This failed outside my changes, likely due to pyparsing version mismatch in my environment
tests/test_compile.py::Asn1ToolsCompileTest::test_missing_parameterized_value FAILED

tests/test_compile.py::Asn1ToolsCompileTest::test_cache PASSED [ 2%]
tests/test_compile.py::Asn1ToolsCompileTest::test_circular_tagged_type_self_reference PASSED [ 4%]
tests/test_compile.py::Asn1ToolsCompileTest::test_circular_tagged_types PASSED [ 6%]
tests/test_compile.py::Asn1ToolsCompileTest::test_duplicated_type PASSED [ 9%]
tests/test_compile.py::Asn1ToolsCompileTest::test_encode_decode_bad_type_name PASSED [ 11%]
tests/test_compile.py::Asn1ToolsCompileTest::test_encoding PASSED [ 13%]
tests/test_compile.py::Asn1ToolsCompileTest::test_import_imported PASSED [ 15%]
tests/test_compile.py::Asn1ToolsCompileTest::test_missing_import_type PASSED [ 18%]
tests/test_compile.py::Asn1ToolsCompileTest::test_missing_import_type_module PASSED [ 20%]
tests/test_compile.py::Asn1ToolsCompileTest::test_missing_import_value PASSED [ 22%]
tests/test_compile.py::Asn1ToolsCompileTest::test_missing_import_value_module PASSED [ 25%]
tests/test_compile.py::Asn1ToolsCompileTest::test_missing_parameterized_type PASSED [ 27%]
tests/test_compile.py::Asn1ToolsCompileTest::test_missing_parameterized_value FAILED [ 29%]
tests/test_compile.py::Asn1ToolsCompileTest::test_missing_type PASSED [ 31%]
tests/test_compile.py::Asn1ToolsCompileTest::test_missing_value PASSED [ 34%]
tests/test_compile.py::Asn1ToolsCompileTest::test_pre_process_all_types_automatic_tags PASSED [ 36%]
tests/test_compile.py::Asn1ToolsCompileTest::test_pre_process_extensibility_implied PASSED [ 38%]
tests/test_compile.py::Asn1ToolsCompileTest::test_pre_process_module_tags_automatic PASSED [ 40%]
tests/test_compile.py::Asn1ToolsCompileTest::test_pre_process_module_tags_explicit PASSED [ 43%]
tests/test_compile.py::Asn1ToolsCompileTest::test_pre_process_module_tags_implicit PASSED [ 45%]
tests/test_compile.py::Asn1ToolsCompileTest::test_pre_process_parameterization PASSED [ 47%]
tests/test_compile.py::Asn1ToolsCompileTest::test_pre_process_time_types PASSED [ 50%]
tests/test_compile.py::Asn1ToolsCompileTest::test_pre_process_x683 PASSED [ 52%]
tests/test_compile.py::Asn1ToolsCompileTest::test_unsupported_codec PASSED [ 54%]
tests/test_compile.py::Asn1ToolsCompileTest::test_wrong_parameterized_type_number_of_parameters PASSED [ 56%]
tests/test_der.py::Asn1ToolsDerTest::test_all_types PASSED [ 59%]
tests/test_der.py::Asn1ToolsDerTest::test_all_types_automatic_tags PASSED [ 61%]
tests/test_der.py::Asn1ToolsDerTest::test_bit_string PASSED [ 63%]
tests/test_der.py::Asn1ToolsDerTest::test_decode_length PASSED [ 65%]
tests/test_der.py::Asn1ToolsDerTest::test_external PASSED [ 68%]
tests/test_der.py::Asn1ToolsDerTest::test_generalized_time PASSED [ 70%]
tests/test_der.py::Asn1ToolsDerTest::test_graphic_string PASSED [ 72%]
tests/test_der.py::Asn1ToolsDerTest::test_integer PASSED [ 75%]
tests/test_der.py::Asn1ToolsDerTest::test_long_tag PASSED [ 77%]
tests/test_der.py::Asn1ToolsDerTest::test_octet_string PASSED [ 79%]
tests/test_der.py::Asn1ToolsDerTest::test_real PASSED [ 81%]
tests/test_der.py::Asn1ToolsDerTest::test_repr_all_types PASSED [ 84%]
tests/test_der.py::Asn1ToolsDerTest::test_rfc5280 PASSED [ 86%]
tests/test_der.py::Asn1ToolsDerTest::test_sequence_of_malformed_element PASSED [ 88%]
tests/test_der.py::Asn1ToolsDerTest::test_set PASSED [ 90%]
tests/test_der.py::Asn1ToolsDerTest::test_set_of_malformed_element PASSED [ 93%]
tests/test_der.py::Asn1ToolsDerTest::test_universal_string PASSED [ 95%]
tests/test_der.py::Asn1ToolsDerTest::test_utc_time PASSED [ 97%]
tests/test_der.py::Asn1ToolsDerTest::test_utf8_string PASSED

@eerimoq

eerimoq commented May 28, 2026

Copy link
Copy Markdown
Owner

nice, any chance you can make the code styling/formatting look more like the rest of the code? Remove some doc strings, put blank lines in correct positions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants