-
Notifications
You must be signed in to change notification settings - Fork 27
Closed
Description
hey I found a gap where you can get at Function and then create code full non static code.
var evaluate = require('./');
var parse = require('esprima').parse;
var src = '(function () {}).constructor("var l = 3; while(l--) console.log(l); console.log(Date.now()); arguments.callee()")()';
var ast = parse(src).body[0].expression;
var res = evaluate(ast); //RangeError from stack overflow
console.log(res)here is the output:
2
1
0
1426154732632
2
1
0
1426154732632
2
1
...
RangeError: Maximum call stack size exceeded
as you would expect.
It's somewhat harder to prevent turing completeness than it is to create it.
Metadata
Metadata
Assignees
Labels
No labels