Commit c92372e8 authored by Stan Hu's avatar Stan Hu

Prevent Error 500s with invalid relative links

https://gitlab.com/gitlab-org/gitlab-ce/issues/52009
parent d9241761
---
title: Prevent Error 500s with invalid relative links
merge_request: 22001
author:
type: fixed
...@@ -60,7 +60,11 @@ module Banzai ...@@ -60,7 +60,11 @@ module Banzai
path_parts.unshift(relative_url_root, project.full_path) path_parts.unshift(relative_url_root, project.full_path)
end end
begin
path = Addressable::URI.escape(File.join(*path_parts)) path = Addressable::URI.escape(File.join(*path_parts))
rescue Addressable::URI::InvalidURIError
return
end
html_attr.value = html_attr.value =
if context[:only_path] if context[:only_path]
......
...@@ -83,6 +83,11 @@ describe Banzai::Filter::RelativeLinkFilter do ...@@ -83,6 +83,11 @@ describe Banzai::Filter::RelativeLinkFilter do
expect { filter(act) }.not_to raise_error expect { filter(act) }.not_to raise_error
end end
it 'does not raise an exception with a space in the path' do
act = link("/uploads/d18213acd3732630991986120e167e3d/Landscape_8.jpg \nBut here's some more unexpected text :smile:)")
expect { filter(act) }.not_to raise_error
end
it 'ignores ref if commit is passed' do it 'ignores ref if commit is passed' do
doc = filter(link('non/existent.file'), commit: project.commit('empty-branch') ) doc = filter(link('non/existent.file'), commit: project.commit('empty-branch') )
expect(doc.at_css('a')['href']) expect(doc.at_css('a')['href'])
......
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