diff options
author | Stan Hu <stanhu@gmail.com> | 2016-06-18 13:10:11 +0000 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2016-06-23 14:29:44 -0400 |
commit | d37fa9db9e67a8d95dc92cc92b8d1e3af74f670d (patch) | |
tree | 035a4f3a92e7ad9104ada3e34e6774e285650c4b | |
parent | a767bb46901bb8fc0f312d45d3c6d6bc22163760 (diff) | |
download | gitlab-ce-d37fa9db9e67a8d95dc92cc92b8d1e3af74f670d.tar.gz |
Merge branch '18819-wiki-link-filter-exception' into 'master'
Fix bug in `WikiLinkFilter`.
Closes #18819
- [ ] #18819 Wiki link filter exception
- [x] Make sure [build](https://gitlab.com/gitlab-org/gitlab-ce/commit/6d169d36cabda783116bcb8e2e6f73254566a670/builds) passes
- [ ] Wait for merge
- [ ] Pick into 8.9
See merge request !4775
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | lib/banzai/filter/wiki_link_filter.rb | 2 | ||||
-rw-r--r-- | spec/lib/banzai/filter/wiki_link_filter_spec.rb | 26 |
3 files changed, 28 insertions, 1 deletions
diff --git a/CHANGELOG b/CHANGELOG index f73d5e82f16..e3ee2e671cc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -16,6 +16,7 @@ v 8.9.1 (unreleased) - Fix typo in export failure email. !4847 - Fix header vertical centering. !4170 - Fix subsequent SAML sign ins. !4718 + - Prevent invalid URLs from raising exceptions in WikiLink Filter. !4775 v 8.9.0 - Fix builds API response not including commit data diff --git a/lib/banzai/filter/wiki_link_filter.rb b/lib/banzai/filter/wiki_link_filter.rb index 37a2779d453..1bb6d6bba87 100644 --- a/lib/banzai/filter/wiki_link_filter.rb +++ b/lib/banzai/filter/wiki_link_filter.rb @@ -29,7 +29,7 @@ module Banzai return if html_attr.blank? html_attr.value = apply_rewrite_rules(html_attr.value) - rescue URI::Error + rescue URI::Error, Addressable::URI::InvalidURIError # noop end diff --git a/spec/lib/banzai/filter/wiki_link_filter_spec.rb b/spec/lib/banzai/filter/wiki_link_filter_spec.rb new file mode 100644 index 00000000000..92d88c4172c --- /dev/null +++ b/spec/lib/banzai/filter/wiki_link_filter_spec.rb @@ -0,0 +1,26 @@ +require 'spec_helper' + +describe Banzai::Filter::WikiLinkFilter, lib: true do + include FilterSpecHelper + + let(:namespace) { build_stubbed(:namespace, name: "wiki_link_ns") } + let(:project) { build_stubbed(:empty_project, :public, name: "wiki_link_project", namespace: namespace) } + let(:user) { double } + let(:wiki) { ProjectWiki.new(project, user) } + + it "doesn't rewrite absolute links" do + filtered_link = filter("<a href='http://example.com:8000/'>Link</a>", project_wiki: wiki).children[0] + expect(filtered_link.attribute('href').value).to eq('http://example.com:8000/') + end + + describe "invalid links" do + invalid_links = ["http://:8080", "http://", "http://:8080/path"] + + invalid_links.each do |invalid_link| + it "doesn't rewrite invalid invalid_links like #{invalid_link}" do + filtered_link = filter("<a href='#{invalid_link}'>Link</a>", project_wiki: wiki).children[0] + expect(filtered_link.attribute('href').value).to eq(invalid_link) + end + end + end +end |