summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJan Provaznik <jprovaznik@gitlab.com>2018-10-24 09:01:52 +0000
committerThiago Presa <tpresa@gitlab.com>2018-10-24 22:01:31 -0300
commit7c2086e2c7c8b91de5fcc67f52aa9b680559ac07 (patch)
treee89b2ebdf1f9f795dd92ef4dafd964da573a524c /app
parent6dcb2c78beced3336142a53d54e644ac543c3ead (diff)
downloadgitlab-ce-7c2086e2c7c8b91de5fcc67f52aa9b680559ac07.tar.gz
Merge branch 'security-11-2-2717-fix-issue-title-xss' into 'security-11-2'
[11.2] Escape issue title while template rendering to prevent XSS See merge request gitlab/gitlabhq!2558
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/gfm_auto_complete.js9
1 files changed, 5 insertions, 4 deletions
diff --git a/app/assets/javascripts/gfm_auto_complete.js b/app/assets/javascripts/gfm_auto_complete.js
index 73b2cd0b2c7..03256ca2285 100644
--- a/app/assets/javascripts/gfm_auto_complete.js
+++ b/app/assets/javascripts/gfm_auto_complete.js
@@ -199,7 +199,7 @@ class GfmAutoComplete {
displayTpl(value) {
let tmpl = GfmAutoComplete.Loading.template;
if (value.title != null) {
- tmpl = GfmAutoComplete.Issues.template;
+ tmpl = GfmAutoComplete.Issues.templateFunction(value.id, value.title);
}
return tmpl;
},
@@ -265,7 +265,7 @@ class GfmAutoComplete {
displayTpl(value) {
let tmpl = GfmAutoComplete.Loading.template;
if (value.title != null) {
- tmpl = GfmAutoComplete.Issues.template;
+ tmpl = GfmAutoComplete.Issues.templateFunction(value.id, value.title);
}
return tmpl;
},
@@ -521,8 +521,9 @@ GfmAutoComplete.Labels = {
};
// Issues and MergeRequests
GfmAutoComplete.Issues = {
- // eslint-disable-next-line no-template-curly-in-string
- template: '<li><small>${id}</small> ${title}</li>',
+ templateFunction(id, title) {
+ return `<li><small>${id}</small> ${_.escape(title)}</li>`;
+ },
};
// Milestones
GfmAutoComplete.Milestones = {