From 56ff640a2f919e9d0e450964081381a8eccef5e4 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 29 Mar 2023 23:49:36 +0000 Subject: Add latest changes from gitlab-org/security/gitlab@15-10-stable-ee --- app/finders/notes_finder.rb | 8 +++ app/models/concerns/taskable.rb | 36 +++++++++----- .../merge_requests/push_options_handler_service.rb | 10 +++- lib/gitlab/regex.rb | 58 +++++++++++----------- lib/gitlab/untrusted_regexp.rb | 11 ++++ spec/finders/notes_finder_spec.rb | 20 ++++++++ spec/lib/gitlab/regex_spec.rb | 10 ++-- spec/lib/gitlab/untrusted_regexp_spec.rb | 32 ++++++++++++ spec/models/concerns/taskable_spec.rb | 6 +-- .../push_options_handler_service_spec.rb | 15 ++++++ 10 files changed, 155 insertions(+), 51 deletions(-) diff --git a/app/finders/notes_finder.rb b/app/finders/notes_finder.rb index c542ffbce7e..81017290f12 100644 --- a/app/finders/notes_finder.rb +++ b/app/finders/notes_finder.rb @@ -30,6 +30,7 @@ class NotesFinder notes = init_collection notes = since_fetch_at(notes) notes = notes.with_notes_filter(@params[:notes_filter]) if notes_filter? + notes = redact_internal(notes) sort(notes) end @@ -181,6 +182,13 @@ class NotesFinder notes.order_by(sort) end + + def redact_internal(notes) + subject = @project || target + return notes if Ability.allowed?(@current_user, :read_internal_note, subject) + + notes.not_internal + end end NotesFinder.prepend_mod_with('NotesFinder') diff --git a/app/models/concerns/taskable.rb b/app/models/concerns/taskable.rb index f9eba4cc2fe..dee1c820f23 100644 --- a/app/models/concerns/taskable.rb +++ b/app/models/concerns/taskable.rb @@ -24,25 +24,37 @@ module Taskable (\s.+) # followed by whitespace and some text. }x.freeze + ITEM_PATTERN_UNTRUSTED = + '^' \ + '(?:(?:>\s{0,4})*)' \ + '(?P(?:\s*(?:[-+*]|(?:\d+\.)))+)' \ + '\s+' \ + '(?P' \ + "#{COMPLETE_PATTERN.source}|#{INCOMPLETE_PATTERN.source}" \ + ')' \ + '(?P