Fix that inline issue auto complete does not sanitize HTML tags (#33846).

Patch by Marius BALTEANU.


git-svn-id: http://svn.redmine.org/redmine/trunk@20827 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2021-03-19 04:24:31 +00:00
parent 984fdcdc53
commit bbfade9728
2 changed files with 22 additions and 0 deletions

View File

@@ -1,6 +1,12 @@
/* Redmine - project management software /* Redmine - project management software
Copyright (C) 2006-2020 Jean-Philippe Lang */ Copyright (C) 2006-2020 Jean-Philippe Lang */
function sanitizeHTML(string) {
var temp = document.createElement('span');
temp.textContent = string;
return temp.innerHTML;
}
function checkAll(id, checked) { function checkAll(id, checked) {
$('#'+id).find('input[type=checkbox]:enabled').prop('checked', checked); $('#'+id).find('input[type=checkbox]:enabled').prop('checked', checked);
} }
@@ -1161,6 +1167,9 @@ function inlineAutoComplete(element) {
selectTemplate: function (issue) { selectTemplate: function (issue) {
return '#' + issue.original.id; return '#' + issue.original.id;
}, },
menuItemTemplate: function (issue) {
return sanitizeHTML(issue.original.label);
},
noMatchTemplate: function () { noMatchTemplate: function () {
return '<span style:"visibility: hidden;"></span>'; return '<span style:"visibility: hidden;"></span>';
} }

View File

@@ -151,4 +151,17 @@ class InlineAutocompleteSystemTest < ApplicationSystemTestCase
end end
assert_equal '[[Page_with_sections]] ', find('#issue_description').value assert_equal '[[Page_with_sections]] ', find('#issue_description').value
end end
def test_inline_autocomplete_for_issues_should_escape_html_elements
issue = Issue.generate!(subject: 'This issue has a <select> element', project_id: 1, tracker_id: 1)
log_user('jsmith', 'jsmith')
visit 'projects/1/issues/new'
fill_in 'Description', :with => '#This'
within('.tribute-container') do
assert page.has_text? "Bug ##{issue.id}: This issue has a <select> element"
end
end
end end