ufuzz: workaround function name and toString() (#1688)

fixes #1686
This commit is contained in:
Alex Lam S.L
2017-03-26 18:18:44 +08:00
committed by GitHub
parent e76fb354eb
commit 00996afd2c

View File

@@ -121,6 +121,8 @@ var TYPEOF_OUTCOMES = [
'symbol', 'symbol',
'crap' ]; 'crap' ];
var FUNC_TOSTRING = 'Function.prototype.toString=function(){return"function(){}"};';
function run_code(code) { function run_code(code) {
var stdout = ""; var stdout = "";
var original_write = process.stdout.write; var original_write = process.stdout.write;
@@ -128,7 +130,15 @@ function run_code(code) {
stdout += chunk; stdout += chunk;
}; };
try { try {
new vm.Script(code).runInNewContext({ console: console }, { timeout: 5000 }); new vm.Script(FUNC_TOSTRING + code).runInNewContext({
console: {
log: function() {
return console.log.apply(console, [].map.call(arguments, function(arg) {
return typeof arg == "function" ? "[Function]" : arg;
}));
}
}
}, { timeout: 5000 });
return stdout; return stdout;
} catch (ex) { } catch (ex) {
return ex; return ex;