OpenSCAP / openscap-report

Tool for generating a report from results of oscap scan.
Other
19 stars 9 forks source link

Traceback when generating reports from ARF coming from Automatus tests #207

Closed jan-cerny closed 1 year ago

jan-cerny commented 1 year ago

Describe the bug

The following traceback happens when I try to generate a report from ARF that was produced by Automatus.

[jcerny@fedora openscap-report{main}]$ python3 -m openscap_report.cli /home/jcerny/work/git/scap-security-guide/logs/rule-custom-2023-08-02-1131/dir_perms_world_writable_root_owned-all_dirs_ok.pass.sh-initial-arf.xml
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/home/jcerny/work/git/openscap-report/openscap_report/cli.py", line 216, in <module>
    main()
  File "/home/jcerny/work/git/openscap-report/openscap_report/cli.py", line 205, in main
    report = api.generate_report(parser)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jcerny/work/git/openscap-report/openscap_report/cli.py", line 173, in generate_report
    report_generator = self.get_report_generator(report_parser)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jcerny/work/git/openscap-report/openscap_report/cli.py", line 169, in get_report_generator
    return dict_of_report_generators[self.output_format](report_parser)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jcerny/work/git/openscap-report/openscap_report/report_generators/html.py", line 24, in __init__
    self.report = parser.parse_report()
                  ^^^^^^^^^^^^^^^^^^^^^
  File "/home/jcerny/work/git/openscap-report/openscap_report/scap_results_parser/scap_results_parser.py", line 91, in parse_report
    rules = rule_parser.get_rules()
            ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jcerny/work/git/openscap-report/openscap_report/scap_results_parser/parsers/rule_parser.py", line 203, in get_rules
    rule = self.process_rule(rule_el)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jcerny/work/git/openscap-report/openscap_report/scap_results_parser/parsers/rule_parser.py", line 78, in process_rule
    "description": self.full_text_parser.get_full_description_of_rule(rule),
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jcerny/work/git/openscap-report/openscap_report/scap_results_parser/parsers/full_text_parser.py", line 58, in get_full_description_of_rule
    return self._get_element_as_string(description) if description is not None else ""
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jcerny/work/git/openscap-report/openscap_report/scap_results_parser/parsers/full_text_parser.py", line 52, in _get_element_as_string
    text += self._get_tag_text(child)
TypeError: can only concatenate str (not "NoneType") to str

To Reproduce Steps to reproduce the behavior:

  1. in the scap-security-guide project, build the content, and run a test scenario using Automatus:

    python3 tests/automatus.py rule  --libvirt qemu:///system ssgts_rhel9 --scenario all_dirs_ok.pass.sh --dontclean  dir_perms_world_writable_root_owned
  2. try to generate a HTML report using oscap-report from the test artifacts

python3 -m openscap_report.cli /home/jcerny/work/git/scap-security-guide/logs/rule-custom-2023-08-02-1131/dir_perms_world_writable_root_owned-all_dirs_ok.pass.sh-initial-arf.xml

I attach this ARF below.

ARF file arf.zip

Expected behavior no traceback, report is generated

Screenshots no

Environment (please complete the following information):

Additional context The issue is also reproducible with the released version openscap-report-0.2.4-1.fc38.noarch.