diff --git a/lib/redmine/wiki_formatting/common_mark/external_links_filter.rb b/lib/redmine/wiki_formatting/common_mark/external_links_filter.rb index d2ea3fafa..c52029552 100644 --- a/lib/redmine/wiki_formatting/common_mark/external_links_filter.rb +++ b/lib/redmine/wiki_formatting/common_mark/external_links_filter.rb @@ -31,7 +31,11 @@ module Redmine next unless url next if url.starts_with?("/") || url.starts_with?("#") || !url.include?(':') - scheme = URI.parse(url).scheme + begin + scheme = URI.parse(url).scheme + rescue URI::InvalidURIError + scheme = nil + end next if scheme.blank? klass = node["class"].presence diff --git a/test/unit/lib/redmine/wiki_formatting/common_mark/external_links_filter_test.rb b/test/unit/lib/redmine/wiki_formatting/common_mark/external_links_filter_test.rb index fcfc3156b..d4b76c401 100644 --- a/test/unit/lib/redmine/wiki_formatting/common_mark/external_links_filter_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/common_mark/external_links_filter_test.rb @@ -44,5 +44,11 @@ if Object.const_defined?(:CommonMarker) def test_mailto_links_should_have_email_class assert_equal %(user), filter(%(user)) end + + def test_malformed_uri_should_not_cause_exception + assert_nothing_raised do + filter(%(Malformed URI)) + end + end end end