diff options
author | Brian White <mscdex@mscdex.net> | 2016-04-06 20:33:28 -0400 |
---|---|---|
committer | Brian White <mscdex@mscdex.net> | 2016-04-18 21:45:26 -0400 |
commit | e38bade82801645d8cc1010e3f4e9826052244cb (patch) | |
tree | 01ca88375556ee4864a3895ccb7a6ebea020d961 /test/parallel/test-event-emitter-special-event-names.js | |
parent | dba245f79622c0c5877825f7cd11667be3548e8e (diff) | |
download | android-node-v8-e38bade82801645d8cc1010e3f4e9826052244cb.tar.gz android-node-v8-e38bade82801645d8cc1010e3f4e9826052244cb.tar.bz2 android-node-v8-e38bade82801645d8cc1010e3f4e9826052244cb.zip |
events: don't inherit from Object.prototype
This commit safely allows event names that are named the same as
properties that are ordinarily inherited from Object.prototype such
as __proto__.
Fixes: https://github.com/nodejs/node/issues/728
PR-URL: https://github.com/nodejs/node/pull/6092
Reviewed-By: Evan Lucas <evanlucas@me.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test/parallel/test-event-emitter-special-event-names.js')
-rw-r--r-- | test/parallel/test-event-emitter-special-event-names.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/parallel/test-event-emitter-special-event-names.js b/test/parallel/test-event-emitter-special-event-names.js new file mode 100644 index 0000000000..fb3f1b52d9 --- /dev/null +++ b/test/parallel/test-event-emitter-special-event-names.js @@ -0,0 +1,36 @@ +'use strict'; + +const common = require('../common'); +const EventEmitter = require('events'); +const assert = require('assert'); + +const ee = new EventEmitter(); +const handler = () => {}; + +assert.strictEqual(ee._events.hasOwnProperty, undefined); +assert.strictEqual(ee._events.toString, undefined); + +ee.on('__proto__', handler); +ee.on('__defineGetter__', handler); +ee.on('toString', handler); + +assert.deepStrictEqual(ee.eventNames(), [ + '__proto__', + '__defineGetter__', + 'toString' +]); + +assert.deepStrictEqual(ee.listeners('__proto__'), [handler]); +assert.deepStrictEqual(ee.listeners('__defineGetter__'), [handler]); +assert.deepStrictEqual(ee.listeners('toString'), [handler]); + +ee.on('__proto__', common.mustCall(function(val) { + assert.strictEqual(val, 1); +})); +ee.emit('__proto__', 1); + +process.on('__proto__', common.mustCall(function(val) { + assert.strictEqual(val, 1); +})); +process.emit('__proto__', 1); + |