From 3b1204eb2d9c5cdf21bb92f7c8923869477f0969 Mon Sep 17 00:00:00 2001 From: Colin Ihrig Date: Wed, 7 Sep 2022 09:11:16 -0400 Subject: fix(core): make errors more resistant to tampering (#15789) This commit makes error objects more resistant to prototype tampering. This bug was found when updating the deno_std Node compatibility layer to Node 18. The Node test 'parallel/test-assert-fail.js' was breaking std's assertion library. Refs: https://github.com/denoland/deno_std/pull/2585 --- core/02_error.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'core/02_error.js') diff --git a/core/02_error.js b/core/02_error.js index edb9c4843..d8e823bb2 100644 --- a/core/02_error.js +++ b/core/02_error.js @@ -127,7 +127,7 @@ let callSiteEvals = ArrayPrototypeMap(callSites, evaluateCallSite); callSiteEvals = ArrayPrototypeMap(callSiteEvals, sourceMapCallSiteEval); ObjectDefineProperties(error, { - __callSiteEvals: { value: [], configurable: true }, + __callSiteEvals: { __proto__: null, value: [], configurable: true }, }); const formattedCallSites = []; for (const cse of callSiteEvals) { -- cgit v1.2.3