mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
repl: preventing REPL crash with inherited properties
When an inherited property is used as a REPL keyword, the REPL crashes. ➜ Desktop iojs > process.version 'v2.3.4' > .toString readline.js:913 stream[ESCAPE_DECODER].next(r[i]); ^ TypeError: Cannot read property 'call' of undefined at REPLServer.parseREPLKeyword (repl.js:746:15) at REPLServer.<anonymous> (repl.js:284:16) at emitOne (events.js:77:13) at REPLServer.emit (events.js:169:7) at REPLServer.Interface._onLine (readline.js:210:10) at REPLServer.Interface._line (readline.js:549:8) at REPLServer.Interface._ttyWrite (readline.js:826:14) at ReadStream.onkeypress (readline.js:105:10) at emitTwo (events.js:87:13) at ReadStream.emit (events.js:172:7) ➜ Desktop This patch makes the internal `commands` object inherit from `null` so that there will be no inherited properties. > process.version 'v2.3.5-pre' > .toString Invalid REPL keyword > PR-URL: https://github.com/nodejs/io.js/pull/2163 Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
This commit is contained in:
parent
77fa385e5d
commit
30edb5aee9
@ -217,7 +217,7 @@ function REPLServer(prompt,
|
||||
|
||||
self.setPrompt(prompt !== undefined ? prompt : '> ');
|
||||
|
||||
this.commands = {};
|
||||
this.commands = Object.create(null);
|
||||
defineDefaultCommands(this);
|
||||
|
||||
// figure out which "writer" function to use
|
||||
|
@ -194,6 +194,10 @@ function error_test() {
|
||||
// the error message
|
||||
{ client: client_unix, send: '.invalid_repl_command',
|
||||
expect: 'Invalid REPL keyword\n' + prompt_unix },
|
||||
// this makes sure that we don't crash when we use an inherited property as
|
||||
// a REPL command
|
||||
{ client: client_unix, send: '.toString',
|
||||
expect: 'Invalid REPL keyword\n' + prompt_unix },
|
||||
]);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user