diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-31 00:01:22 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-31 00:01:46 +0000 |
commit | 7e3ab46a0769ed3f61d02c8662395e8f2e99703f (patch) | |
tree | edb42e0cd9f9e1eddd867f1de3948ce1ca1d35e4 | |
parent | 083a9c669b2841b42f80476e5271fadcf6c3a635 (diff) | |
download | gitlab-ce-7e3ab46a0769ed3f61d02c8662395e8f2e99703f.tar.gz |
Add latest changes from gitlab-org/security/gitlab@14-8-stable-ee
-rw-r--r-- | config/initializers/rdoc_segfault_patch.rb | 21 | ||||
-rw-r--r-- | spec/initializers/rdoc_segfault_patch_spec.rb | 24 |
2 files changed, 45 insertions, 0 deletions
diff --git a/config/initializers/rdoc_segfault_patch.rb b/config/initializers/rdoc_segfault_patch.rb new file mode 100644 index 00000000000..2494d7ef421 --- /dev/null +++ b/config/initializers/rdoc_segfault_patch.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +# Monkey patch of RDoc to prevent Ruby segfault due to +# stack buffer overflow Ruby bug - +# https://bugs.ruby-lang.org/issues/16376 +# +# Safe to remove once GitLab upgrades to Ruby 3.0 +# or once the fix is backported to 2.7.x and +# GitLab upgrades. +# https://gitlab.com/gitlab-org/gitlab/-/issues/351179 +class RDoc::Markup::ToHtml + def parseable?(_) + false + end +end + +class RDoc::Markup::Verbatim + def ruby? + false + end +end diff --git a/spec/initializers/rdoc_segfault_patch_spec.rb b/spec/initializers/rdoc_segfault_patch_spec.rb new file mode 100644 index 00000000000..f9630295052 --- /dev/null +++ b/spec/initializers/rdoc_segfault_patch_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +RSpec.describe 'RDoc segfault patch fix' do + describe 'RDoc::Markup::ToHtml' do + describe '#parseable?' do + it 'returns false' do + to_html = RDoc::Markup::ToHtml.new( nil) + + expect(to_html.parseable?('"def foo; end"')).to eq(false) + end + end + end + + describe 'RDoc::Markup::Verbatim' do + describe 'ruby?' do + it 'returns false' do + verbatim = RDoc::Markup::Verbatim.new('def foo; end') + verbatim.format = :ruby + + expect(verbatim.ruby?).to eq(false) + end + end + end +end |