From 3ac340e03ea7d27013cbb011b12e96ccfe1e1ee7 Mon Sep 17 00:00:00 2001 From: Dennis Schubert Date: Sun, 20 Dec 2015 00:06:19 +0100 Subject: [PATCH 1/3] Prepeare 0.5.5.1 hotfix --- config/defaults.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/defaults.yml b/config/defaults.yml index 76ab9b5df..8ebef3e90 100644 --- a/config/defaults.yml +++ b/config/defaults.yml @@ -4,7 +4,7 @@ defaults: version: - number: "0.5.5.0" # Do not touch unless doing a release, do not backport the version number that's in master + number: "0.5.5.1" # Do not touch unless doing a release, do not backport the version number that's in master heroku: false environment: url: "http://localhost:3000/" From e20f2ae566d233de5133b1825542f47bb80afe21 Mon Sep 17 00:00:00 2001 From: Steffen van Bergerem Date: Thu, 17 Dec 2015 01:07:57 +0100 Subject: [PATCH 2/3] Fix XSS in sharing message --- Changelog.md | 4 ++++ .../javascripts/app/helpers/handlebars-helpers.js | 8 ++++---- .../app/helpers/handlebars-helpers_spec.js | 12 ++++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 spec/javascripts/app/helpers/handlebars-helpers_spec.js diff --git a/Changelog.md b/Changelog.md index 8cf3cb95f..e6a2d713e 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,7 @@ +# 0.5.5.1 + +* Fix XSS on profile pages + # 0.5.5.0 ## Bug fixes diff --git a/app/assets/javascripts/app/helpers/handlebars-helpers.js b/app/assets/javascripts/app/helpers/handlebars-helpers.js index 1862dc11b..d27f4df96 100644 --- a/app/assets/javascripts/app/helpers/handlebars-helpers.js +++ b/app/assets/javascripts/app/helpers/handlebars-helpers.js @@ -42,15 +42,15 @@ Handlebars.registerHelper('linkToPerson', function(context, block) { }); // relationship indicator for profile page -Handlebars.registerHelper('sharingMessage', function(person) { - var i18n_scope = 'people.helper.is_not_sharing'; +Handlebars.registerHelper("sharingMessage", function(person) { + var i18nScope = "people.helper.is_not_sharing"; var icon = "circle"; if( person.is_sharing ) { - i18n_scope = 'people.helper.is_sharing'; + i18nScope = "people.helper.is_sharing"; icon = "entypo check"; } - var title = Diaspora.I18n.t(i18n_scope, {name: person.name}); + var title = Diaspora.I18n.t(i18nScope, {name: _.escape(person.name)}); var html = ''; diff --git a/spec/javascripts/app/helpers/handlebars-helpers_spec.js b/spec/javascripts/app/helpers/handlebars-helpers_spec.js new file mode 100644 index 000000000..1ea73894f --- /dev/null +++ b/spec/javascripts/app/helpers/handlebars-helpers_spec.js @@ -0,0 +1,12 @@ +describe("Handlebars helpers", function() { + beforeEach(function() { + Diaspora.I18n.load({people: {helper: {"is_not_sharing": "<%= name %> is not sharing with you"}}}); + }); + + describe("sharingMessage", function() { + it("escapes the person's name", function() { + var person = { name: "\"> \">"}; + expect(Handlebars.helpers.sharingMessage(person)).not.toMatch(/