Sha256: 7eb1a26388fc6901f577e18823c933794205eea16848d57fb817cbc3d42e1192

Contents?: true

Size: 1.73 KB

Versions: 19

Compression:

Stored size: 1.73 KB

Contents

# Copyright (c) 2022 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

19 entries across 19 versions & 1 rubygems

Version Path
contrast-agent-6.6.5 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.6.4 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.6.3 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.6.2 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.6.1 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.6.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.5.1 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.5.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.4.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.3.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.2.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.1.2 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.1.1 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.1.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-6.0.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-5.3.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-5.2.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-5.1.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-5.0.0 lib/contrast/api/decorators/trace_taint_range.rb