From 8d570b29032133080cce1fb73dde203dcb41a842 Mon Sep 17 00:00:00 2001 From: Brett Walker <bwalker@gitlab.com> Date: Mon, 10 Jun 2024 11:11:45 -0500 Subject: [PATCH] Ignore wiki links that have missing href MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit An invalid href was being sanitzed/removed, causing code to fail. Ignore any wiki links that don’t have an href. Changelog: fixed --- lib/banzai/filter/wiki_link_gollum_filter.rb | 2 +- spec/lib/banzai/filter/wiki_link_gollum_filter_spec.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/banzai/filter/wiki_link_gollum_filter.rb b/lib/banzai/filter/wiki_link_gollum_filter.rb index 97c5ee1f34c4..df29269d7e7e 100644 --- a/lib/banzai/filter/wiki_link_gollum_filter.rb +++ b/lib/banzai/filter/wiki_link_gollum_filter.rb @@ -30,7 +30,7 @@ class WikiLinkGollumFilter < HTML::Pipeline::Filter # Pattern to match allowed image extensions ALLOWED_IMAGE_EXTENSIONS = /(jpg|png|gif|svg|bmp)\z/i - CSS_WIKILINK_STYLE = 'a[data-wikilink]' + CSS_WIKILINK_STYLE = 'a[href][data-wikilink]' XPATH_WIKILINK_STYLE = Gitlab::Utils::Nokogiri.css_to_xpath(CSS_WIKILINK_STYLE).freeze def call diff --git a/spec/lib/banzai/filter/wiki_link_gollum_filter_spec.rb b/spec/lib/banzai/filter/wiki_link_gollum_filter_spec.rb index d021bbca4cc0..0124beb4a851 100644 --- a/spec/lib/banzai/filter/wiki_link_gollum_filter_spec.rb +++ b/spec/lib/banzai/filter/wiki_link_gollum_filter_spec.rb @@ -192,6 +192,14 @@ end # rubocop:enable Layout/LineLength + context 'when the href gets sanitized out' do + it 'ignores the link' do + doc = pipeline_filter('[[test|http://]]', wiki: wiki) + + expect(doc.at_css('a')['data-gollum']).to be_nil + end + end + def pipeline_filter(text, context = {}) context = { project: project, no_sourcepos: true }.merge(context) -- GitLab