From 117072d45f7fbcc375bec66758f5187f2a0de3ea Mon Sep 17 00:00:00 2001 From: Kushal Pandya Date: Mon, 12 Nov 2018 14:51:25 +0530 Subject: Fix user name autocomplete XSS when name contains HTML --- app/assets/javascripts/gfm_auto_complete.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/gfm_auto_complete.js b/app/assets/javascripts/gfm_auto_complete.js index 00b3d283570..6f8b73564d0 100644 --- a/app/assets/javascripts/gfm_auto_complete.js +++ b/app/assets/javascripts/gfm_auto_complete.js @@ -151,10 +151,16 @@ class GfmAutoComplete { // Team Members $input.atwho({ at: '@', + alias: 'users', displayTpl(value) { let tmpl = GfmAutoComplete.Loading.template; - if (value.username != null) { - tmpl = GfmAutoComplete.Members.template; + const { avatarTag, username, title } = value; + if (username != null) { + tmpl = GfmAutoComplete.Members.templateFunction({ + avatarTag, + username, + title, + }); } return tmpl; }, @@ -565,8 +571,9 @@ GfmAutoComplete.Emoji = { }; // Team Members GfmAutoComplete.Members = { - // eslint-disable-next-line no-template-curly-in-string - template: '
  • ${avatarTag} ${username} ${title}
  • ', + templateFunction({ avatarTag, username, title }) { + return `
  • ${avatarTag} ${username} ${_.escape(title)}
  • `; + }, }; GfmAutoComplete.Labels = { template: -- cgit v1.2.3