Remove add-on events to prevent add-ons from monitoring other listeners 02/217002/2
authorsurya.kumar7 <surya.kumar7@samsung.com>
Tue, 5 Nov 2019 09:29:28 +0000 (14:59 +0530)
committersurya.kumar7 <surya.kumar7@samsung.com>
Tue, 5 Nov 2019 09:38:48 +0000 (15:08 +0530)
A couple allowed add-on events can be used to eavesdrop on other
add-ons or examine other listeners' code. Removed them to avoid
any exploits.

Change-Id: I9791d82516f2f263bf2e4f5ef7c793eadda85b35
Signed-off-by: surya.kumar7 <surya.kumar7@samsung.com>
wrt_app/src/addon_manager.js

index 31c537ac4e1203423ee6afe9da625f0afbd9b1e3..a156fa7f4dee187bb77571f154c6cf15bdd61f8a 100644 (file)
@@ -26,8 +26,6 @@ const ADDONS_PATH = path.join(__dirname, '..', 'addon', 'browser', 'addonapi.js'
 
 // A set of predefined events for addons
 const EventList = [
-    'newListener',      // A listener is added via on() or addListener()
-    'removeListener',   // A listener is removed via off() or removeListener()
     'lcPrelaunch',      // An app is at just before launching
     'lcResume',         // An app is resumed
     'lcSuspend',        // An app is suspended
@@ -197,24 +195,18 @@ class AddonManager {
         this.evt_emitter_ = new EventEmitter();
         this.wrappedEventEmitter = {
             on: (eventName, listener) => {
-                if (EventList.indexOf(eventName) !== -1)
+                if (EventList.indexOf(eventName) !== -1) {
+                    console.log(`A new listener for ${eventName} is added`);
                     this.evt_emitter_.on(eventName, listener);
-                else console.log('Invalid Event: ' + eventName);
+                } else console.log(`Invalid Event: ${eventName}`);
             },
             off: (eventName, listener) => {
-                if (EventList.indexOf(eventName) !== -1)
+                if (EventList.indexOf(eventName) !== -1) {
+                    console.log(`A listener for ${eventName} is removed`);
                     this.evt_emitter_.off(eventName, listener);
-                else console.log('Invalid Event: ' + eventName);
+                } else console.log(`Invalid Event: ${eventName}`);
             }
         }
-
-        this.evt_emitter_.on('newListener', function(event, listener) {
-            console.log('A listener for ' + event + ' has been added');
-        });
-
-        this.evt_emitter_.on('removeListener', function(event, listener) {
-            console.log('A listener for ' + event + ' has been removed');
-        });
     }
 
     static getManifestFile() {