From c940bba4a3a088404b3eb20a76417840b81bbd6c Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Fri, 6 Jan 2017 12:50:59 -0800 Subject: [PATCH] Trim exception stack trace in faults --- lib/cache.coffee | 4 ++-- lib/sandbox.js | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/cache.coffee b/lib/cache.coffee index dfb316b..cee4754 100644 --- a/lib/cache.coffee +++ b/lib/cache.coffee @@ -192,7 +192,7 @@ refresh = (callback) -> for r in res provisions[r._id] = {} provisions[r._id].md5 = crypto.createHash('md5').update(r.script).digest('hex') - provisions[r._id].script = new vm.Script("\"use strict\";(function(){\n#{r.script}\n})();", {filename: r._id, lineOffset: 1, timeout: 50}) + provisions[r._id].script = new vm.Script("\"use strict\";(function(){\n#{r.script}\n})();", {filename: r._id, lineOffset: -1, timeout: 50}) if (counter -= 2) == 1 computeHash() @@ -213,7 +213,7 @@ refresh = (callback) -> for r in res virtualParameters[r._id] = {} virtualParameters[r._id].md5 = crypto.createHash('md5').update(r.script).digest('hex') - virtualParameters[r._id].script = new vm.Script("\"use strict\";(function(){\n#{r.script}\n})();", {filename: r._id, lineOffset: 1, timeout: 50}) + virtualParameters[r._id].script = new vm.Script("\"use strict\";(function(){\n#{r.script}\n})();", {filename: r._id, lineOffset: -1, timeout: 50}) if (counter -= 2) == 1 computeHash() diff --git a/lib/sandbox.js b/lib/sandbox.js index d03f443..a121b16 100644 --- a/lib/sandbox.js +++ b/lib/sandbox.js @@ -224,13 +224,16 @@ function errorToFault(err) { if (!err) return null; + // Trim the stack trace at the self-executing anonymous wrapper function + let stackTrimIndex = err.stack.match(/\s+at\s[^\s]+\s+at\s[^\s]+\s\(vm\.js.+\)/).index; + return { code: `script.${err.name}`, message: err.message, detail: { name: err.name, message: err.message, - stack: err.stack + stack: err.stack.slice(0, stackTrimIndex) } } }