Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-03-03 18:16:42 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-03-03 18:16:42 +0300
commit42afc4d656c20b2b9f909579097000c162eaf3a6 (patch)
tree5b119109904aa5cd2bce9a859bd7954ac5164cc7 /lib/gitlab/ci/parsers
parentaaa65d324933a1f7e380c0f05a7b87fb3fe2e4b7 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/ci/parsers')
-rw-r--r--lib/gitlab/ci/parsers/security/common.rb5
-rw-r--r--lib/gitlab/ci/parsers/security/validators/schema_validator.rb26
2 files changed, 23 insertions, 8 deletions
diff --git a/lib/gitlab/ci/parsers/security/common.rb b/lib/gitlab/ci/parsers/security/common.rb
index ff8641c014d..52b6c20a3ab 100644
--- a/lib/gitlab/ci/parsers/security/common.rb
+++ b/lib/gitlab/ci/parsers/security/common.rb
@@ -19,6 +19,8 @@ module Gitlab
end
def parse!
+ set_report_version
+
return report_data unless valid?
raise SecurityReportParserError, "Invalid report format" unless report_data.is_a?(Hash)
@@ -26,7 +28,6 @@ module Gitlab
create_scanner
create_scan
create_analyzer
- set_report_version
create_findings
@@ -66,7 +67,7 @@ module Gitlab
end
def schema_validator
- @schema_validator ||= ::Gitlab::Ci::Parsers::Security::Validators::SchemaValidator.new(report.type, report_data)
+ @schema_validator ||= ::Gitlab::Ci::Parsers::Security::Validators::SchemaValidator.new(report.type, report_data, report.version)
end
def report_data
diff --git a/lib/gitlab/ci/parsers/security/validators/schema_validator.rb b/lib/gitlab/ci/parsers/security/validators/schema_validator.rb
index 1dce0cb18a8..0ab1a128052 100644
--- a/lib/gitlab/ci/parsers/security/validators/schema_validator.rb
+++ b/lib/gitlab/ci/parsers/security/validators/schema_validator.rb
@@ -46,15 +46,16 @@ module Gitlab
File.join(__dir__, 'schemas')
end
- def initialize(report_type)
+ def initialize(report_type, report_version)
@report_type = report_type.to_sym
+ @report_version = report_version.to_s
end
delegate :validate, to: :schemer
private
- attr_reader :report_type
+ attr_reader :report_type, :report_version
def schemer
JSONSchemer.schema(pathname)
@@ -65,7 +66,19 @@ module Gitlab
end
def schema_path
- File.join(root_path, file_name)
+ # We can't exactly error out here pre-15.0.
+ # If the report itself doesn't specify the schema version,
+ # it will be considered invalid post-15.0 but for now we will
+ # validate against earliest supported version.
+ # https://gitlab.com/gitlab-org/gitlab/-/issues/335789#note_801479803
+ # describes the indended behavior in detail
+ # TODO: After 15.0 - pass report_type and report_data here and
+ # error out if no version.
+ report_declared_version = File.join(root_path, report_version, file_name)
+ return report_declared_version if File.file?(report_declared_version)
+
+ earliest_supported_version = SUPPORTED_VERSIONS[report_type].min
+ File.join(root_path, earliest_supported_version, file_name)
end
def file_name
@@ -73,9 +86,10 @@ module Gitlab
end
end
- def initialize(report_type, report_data)
+ def initialize(report_type, report_data, report_version = nil)
@report_type = report_type
@report_data = report_data
+ @report_version = report_version
end
def valid?
@@ -88,10 +102,10 @@ module Gitlab
private
- attr_reader :report_type, :report_data
+ attr_reader :report_type, :report_data, :report_version
def schema
- Schema.new(report_type)
+ Schema.new(report_type, report_version)
end
end
end