summaryrefslogtreecommitdiff
path: root/addons/mail/static/src
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2015-12-09 10:37:24 +0100
committerAaron Bohy <aab@odoo.com>2015-12-09 11:16:24 +0100
commit6cf8ebab3d549e9ea28d662d1caf6cb2ccb1db82 (patch)
tree396920c75399bee558ca89451482a2c85812383d /addons/mail/static/src
parent085f6e0e6872cbfe2e4ee2c8db92bef0f1f23b8c (diff)
[FIX] mail: escape user and channel names to prevent xss
However, users shouldn't be allowed to have xss in their name, imo.
Diffstat (limited to 'addons/mail/static/src')
-rw-r--r--addons/mail/static/src/js/chat_manager.js2
-rw-r--r--addons/mail/static/src/js/client_action.js12
2 files changed, 8 insertions, 6 deletions
diff --git a/addons/mail/static/src/js/chat_manager.js b/addons/mail/static/src/js/chat_manager.js
index 2261b961410..9c2787e18ce 100644
--- a/addons/mail/static/src/js/chat_manager.js
+++ b/addons/mail/static/src/js/chat_manager.js
@@ -98,7 +98,7 @@ function add_message (data, options) {
if (!query.is_displayed) {
var title = _t('New message');
if (msg.author_id[1]) {
- title += _t(' from ') + msg.author_id[1];
+ title += _t(' from ') + _.escape(msg.author_id[1]);
}
var trunc_text = function (t, limit) {
return (t.length > limit) ? t.substr(0, limit-1)+'&hellip;' : t;
diff --git a/addons/mail/static/src/js/client_action.js b/addons/mail/static/src/js/client_action.js
index e06abc5a9de..c26ee8fb60c 100644
--- a/addons/mail/static/src/js/client_action.js
+++ b/addons/mail/static/src/js/client_action.js
@@ -76,7 +76,7 @@ var PartnerInviteDialog = Dialog.extend({
var ChannelModel = new Model('mail.channel');
return ChannelModel.call('channel_invite', [], {ids : [this.channel_id], partner_ids: _.pluck(data, 'id')})
.then(function(){
- var names = _.pluck(data, 'text').join(', ');
+ var names = _.escape(_.pluck(data, 'text').join(', '));
var notification = _.str.sprintf(_t('You added <b>%s</b> to the conversation.'), names);
self.do_notify(_t('New people'), notification);
});
@@ -293,9 +293,10 @@ var ChatAction = Widget.extend(ControlPanelMixin, {
return Channel.call('channel_search_to_join', [search_val]).then(function(result){
var values = [];
_.each(result, function(channel){
+ var escaped_name = _.escape(channel.name);
values.push(_.extend(channel, {
- 'value': channel.name,
- 'label': channel.name,
+ 'value': escaped_name,
+ 'label': escaped_name,
}));
});
return values;
@@ -307,9 +308,10 @@ var ChatAction = Widget.extend(ControlPanelMixin, {
return Partner.call('im_search', [search_val, 20]).then(function(result){
var values = [];
_.each(result, function(user){
+ var escaped_name = _.escape(user.name);
values.push(_.extend(user, {
- 'value': user.name,
- 'label': user.name,
+ 'value': escaped_name,
+ 'label': escaped_name,
}));
});
return values;