Sha256: ae6d39034a6e0d8590f2b4d903e9d25a33dcb5294de0ae494a2bc525b79b1bec

Contents?: true

Size: 1.73 KB

Versions: 11

Compression:

Stored size: 1.73 KB

Contents

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

11 entries across 11 versions & 1 rubygems

Version Path
contrast-agent-4.4.1 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.4.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.3.2 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.3.1 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.3.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.2.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.1.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-4.0.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-3.16.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-3.15.0 lib/contrast/api/decorators/trace_taint_range.rb
contrast-agent-3.14.0 lib/contrast/api/decorators/trace_taint_range.rb