Fix crash of 'analyze attack' with rulesets without ATT&CK tags - #96
Open
SkxOverKill wants to merge 1 commit into
Open
Fix crash of 'analyze attack' with rulesets without ATT&CK tags#96SkxOverKill wants to merge 1 commit into
SkxOverKill wants to merge 1 commit into
Conversation
If no rule carries an attack tag, calculate_attack_scores() returns an
empty dict. The ATT&CK Navigator layer generation then evaluated
max(scores.values()) on the empty dict, which raised
'ValueError: max() iterable argument is empty' and aborted the command
with a raw traceback and exit code 1, without writing the output file.
Additionally, an explicitly set --max-score 0 was ignored because the
previous expression checked truthiness ('max_score or ...') instead of
None.
Resolve the maximum to the explicit --max-score if given, otherwise to
the highest score present, falling back to 0 for empty rulesets.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
If no rule carries an attack tag, calculate_attack_scores() returns an empty dict. The ATT&CK Navigator layer generation then evaluated max(scores.values()) on the empty dict, which raised 'ValueError: max() iterable argument is empty' and aborted the command with a raw traceback and exit code 1, without writing the output file.
Additionally, an explicitly set --max-score 0 was ignored because the previous expression checked truthiness ('max_score or ...') instead of None.
Resolve the maximum to the explicit --max-score if given, otherwise to the highest score present, falling back to 0 for empty rulesets.