Commit 2c8c782b authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets Committed by Dmitriy Zaporozhets

Merge branch 'rs-issue-2257' into 'master'

Recover from URI::Error

`URI::Error` is the base class for all URI errors.

Fixes #2257 and #2260

See merge request !1789
parent 20a66988
...@@ -255,11 +255,15 @@ module ApplicationHelper ...@@ -255,11 +255,15 @@ module ApplicationHelper
# #
# Returns `html_options`, adding `rel: nofollow` for external links # Returns `html_options`, adding `rel: nofollow` for external links
def add_nofollow(link, html_options = {}) def add_nofollow(link, html_options = {})
uri = URI(link) begin
uri = URI(link)
if uri && uri.absolute? && uri.host != Gitlab.config.gitlab.host if uri && uri.absolute? && uri.host != Gitlab.config.gitlab.host
rel = html_options.fetch(:rel, '') rel = html_options.fetch(:rel, '')
html_options[:rel] = (rel + ' nofollow').strip html_options[:rel] = (rel + ' nofollow').strip
end
rescue URI::Error
# noop
end end
html_options html_options
......
...@@ -249,6 +249,16 @@ describe ApplicationHelper do ...@@ -249,6 +249,16 @@ describe ApplicationHelper do
expect(link_to('Example', 'http://example.foo/bar')). expect(link_to('Example', 'http://example.foo/bar')).
to eq '<a href="http://example.foo/bar">Example</a>' to eq '<a href="http://example.foo/bar">Example</a>'
end end
it 'should not raise an error when given a bad URI' do
expect { link_to('default', 'if real=1 RANDOM; if real>1 IDLHS; if real>500 LHS') }.
not_to raise_error
end
it 'should not raise an error when given a bad mailto URL' do
expect { link_to('email', 'mailto://foo.bar@example.es?subject=Subject%20Line') }.
not_to raise_error
end
end end
describe 'markup_render' do describe 'markup_render' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment