Sha256: a53502dc486b451159be205eb4f9e5452039596d1aee2e288e19b030877a54db

Contents?: true

Size: 1.73 KB

Versions: 13

Compression:

Stored size: 1.73 KB

Contents

# Copyright (c) 2021 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details.
# frozen_string_literal: true

require 'contrast/utils/object_share'
require 'contrast/utils/string_utils'

module Contrast
  module Api
    module Decorators
      # Used to decorate the {Contrast::Api::Dtm::TraceTaintRange} protobuf
      # model.
      module TraceTaintRange
        def self.included klass
          klass.extend(ClassMethods)
        end

        # Class methods for TraceEventObject
        module ClassMethods
          # Convert the tags from Contrast::Agent::Assess::Property::Tagged to
          # the form required for their Event's DTM.
          #
          # @param tags [Hash{String => Array<Contrast::Agent::Assess::Tag>}]
          # @return [Array<Contrast::Api::Dtm::TraceTaintRange>]
          def build_for_event tags
            return Contrast::Utils::ObjectShare::EMPTY_ARRAY unless tags&.any?

            ranges = []
            tags.each_value do |value|
              next if value.empty?

              value.each { |tag| ranges << build(tag) }
            end
            ranges
          end

          # Convert our Tags to their DTM equivalent
          #
          # @param tag [Contrast::Agent::Assess::Tag]
          # @return [Contrast::Api::Dtm::TraceTaintRange]
          def build tag
            range = Contrast::Api::Dtm::TraceTaintRange.new
            range.tag = Contrast::Utils::StringUtils.protobuf_safe_string(tag.label)
            range.range = tag.start_idx.to_s + Contrast::Utils::ObjectShare::COLON + tag.end_idx.to_s
            range
          end
        end
      end
    end
  end
end

Contrast::Api::Dtm::TraceTaintRange.include(Contrast::Api::Decorators::TraceTaintRange)

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
contrast-agent-4.14.1 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.14.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.13.1 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.13.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.12.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.11.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.10.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.9.1 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.9.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.8.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.7.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.6.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.5.0 lib/contrast/api/decorators/trace_taint_range.rb