Skip to content

Commit a44454a

Browse files
committed
Sanitize response on notify callback
1 parent 905e063 commit a44454a

File tree

5 files changed

+19
-19
lines changed

5 files changed

+19
-19
lines changed

Diff for: lib/utils.js

+9-5
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,15 @@ module.exports.mapToMac = function (options) {
161161
module.exports.actionJackerDecorator = function (emitter, options, fn, mapper) {
162162
options = clone(options);
163163
fn = fn || function (err, data) {};
164-
return function (err, data) {
165-
fn.apply(emitter, [err, data]);
166-
if (err || !mapper || !data) return;
167-
168-
var key = mapper(data);
164+
return function (err, data) {
165+
var cleanedData = data.toLowerCase().trim();
166+
if(cleanedData.match(/^activate/)) {
167+
cleanedData = 'activate';
168+
}
169+
fn.apply(emitter, [err, cleanedData]);
170+
if (err || !mapper || !cleanedData) return;
171+
172+
var key = mapper(cleanedData);
169173
if (!key) return;
170174
emitter.emit(key, emitter, options);
171175
};

Diff for: notifiers/balloon.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,12 @@ WindowsBalloon.prototype.notify = function (options, callback) {
5959
title: 'node-notifier',
6060
message: options
6161
};
62-
62+
6363
var actionJackedCallback = utils.actionJackerDecorator(this, options, callback, function (data) {
64-
var cleaned = data.toLowerCase().trim();
65-
if (cleaned === 'activate') {
64+
if (data === 'activate') {
6665
return 'click';
6766
}
68-
if (cleaned === 'timeout') {
67+
if (data === 'timeout') {
6968
return 'timeout';
7069
}
7170
return false;

Diff for: notifiers/growl.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,10 @@ Growl.prototype.notify = function (options, callback) {
3939
};
4040

4141
callback = utils.actionJackerDecorator(this, options, callback, function (data) {
42-
var cleaned = data.toLowerCase().trim();
43-
if (cleaned === 'click') {
42+
if (data === 'click') {
4443
return 'click';
4544
}
46-
if (cleaned === 'timedout') {
45+
if (data === 'timedout') {
4746
return 'timeout';
4847
}
4948
return false;

Diff for: notifiers/notificationcenter.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,10 @@ NotificationCenter.prototype.notify = function (options, callback) {
4141
var actionJackedCallback = utils.actionJackerDecorator(this, options, callback, function (data) {
4242
if (activeId !== id) return false;
4343

44-
var cleaned = data.toLowerCase().trim();
45-
if (cleaned === 'activate') {
44+
if (data === 'activate') {
4645
return 'click';
4746
}
48-
if (cleaned === 'timeout') {
47+
if (data === 'timeout') {
4948
return 'timeout';
5049
}
5150
return false;

Diff for: notifiers/toaster.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,12 @@ WindowsToaster.prototype.notify = function (options, callback) {
3434
title: 'node-notifier',
3535
message: options
3636
};
37-
37+
3838
var actionJackedCallback = utils.actionJackerDecorator(this, options, callback, function (data) {
39-
var cleaned = data.toLowerCase().trim();
40-
if (cleaned === 'activated') {
39+
if (data === 'activate') {
4140
return 'click';
4241
}
43-
if (cleaned === 'timeout') {
42+
if (data === 'timeout') {
4443
return 'timeout';
4544
}
4645
return false;

0 commit comments

Comments
 (0)