diff options
Diffstat (limited to 'app/models/concerns/vulnerability_finding_signature_helpers.rb')
-rw-r--r-- | app/models/concerns/vulnerability_finding_signature_helpers.rb | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/app/models/concerns/vulnerability_finding_signature_helpers.rb b/app/models/concerns/vulnerability_finding_signature_helpers.rb index f98c1e93aaf..71a12b4077b 100644 --- a/app/models/concerns/vulnerability_finding_signature_helpers.rb +++ b/app/models/concerns/vulnerability_finding_signature_helpers.rb @@ -2,6 +2,30 @@ module VulnerabilityFindingSignatureHelpers extend ActiveSupport::Concern -end + # If the location object describes a physical location within a file + # (filename + line numbers), the 'location' algorithm_type should be used + # If the location object describes arbitrary data, then the 'hash' + # algorithm_type should be used. + + ALGORITHM_TYPES = { hash: 1, location: 2, scope_offset: 3 }.with_indifferent_access.freeze + + class_methods do + def priority(algorithm_type) + raise ArgumentError, "No priority for #{algorithm_type.inspect}" unless ALGORITHM_TYPES.key?(algorithm_type) + + ALGORITHM_TYPES[algorithm_type] + end -VulnerabilityFindingSignatureHelpers.prepend_mod_with('VulnerabilityFindingSignatureHelpers') + def algorithm_types + ALGORITHM_TYPES + end + end + + def priority + self.class.priority(algorithm_type) + end + + def algorithm_types + self.class.algorithm_types + end +end |