Skip to content

Wrap getters calling with try catch to avoid unhandled errors#468

Merged
weizman merged 2 commits into
mainfrom
wrap-getters-try-catch
Mar 15, 2023
Merged

Wrap getters calling with try catch to avoid unhandled errors#468
weizman merged 2 commits into
mainfrom
wrap-getters-try-catch

Conversation

@weizman

@weizman weizman commented Mar 9, 2023

Copy link
Copy Markdown
Member

Calling getters might throw and we need to catch there errors so the program will continue to execute (ctx)

@FrederikBolding

Copy link
Copy Markdown
Contributor

I can confirm that this fixed the issues I was having when executing in a sandboxed iframe.

@naugtur

naugtur commented Mar 14, 2023

Copy link
Copy Markdown
Member

Previously when we discussed this, try-catch in a loop was rejected because of performance impact. Should we benchmark this to actually know?

@weizman

weizman commented Mar 14, 2023

Copy link
Copy Markdown
Member Author

I don't think we'll see any actual difference. It's an iteration of around 1000~ descriptors, nothing too crazy.
I ran a quick benchmark on Chrome where I ran the entire runtime.js with and without try-catch and there was no difference whatsoever.

@weizman weizman requested a review from naugtur March 14, 2023 15:49
@weizman weizman merged commit 99c44e5 into main Mar 15, 2023
@weizman weizman deleted the wrap-getters-try-catch branch March 15, 2023 09:09
naugtur added a commit that referenced this pull request May 15, 2023
 - restrict engines.node to < 19.0.0
 - Add `WebAssembly` scuttle globalThis exceptions - this is necessary as of Node.js 18
 - Skip JSON files only for policy generation instead of limiting to js files. Current allowlist: cjs,js,mjs,ts
 - core/fix - remove console taming to that errors are logged to the console correctly
 - core: fix globalThis polyfill
 - Fix uncaught error when receiver is null in getPropertyDescriptorDeep (#463)
 - drop uneeded additionalOpts arg and migrate back into using scenario object (#471)
 - Wrap getters calling with try catch (#468)
 - Deprecate `global`,`self` as aliases for `globalThis`
@naugtur naugtur mentioned this pull request May 15, 2023
legobeat pushed a commit that referenced this pull request May 15, 2023
 - restrict engines.node to < 19.0.0
 - Add `WebAssembly` scuttle globalThis exceptions - this is necessary as of Node.js 18
 - Skip JSON files only for policy generation instead of limiting to js files. Current allowlist: cjs,js,mjs,ts
 - core/fix - remove console taming to that errors are logged to the console correctly
 - core: fix globalThis polyfill
 - Fix uncaught error when receiver is null in getPropertyDescriptorDeep (#463)
 - drop uneeded additionalOpts arg and migrate back into using scenario object (#471)
 - Wrap getters calling with try catch (#468)
 - Deprecate `global`,`self` as aliases for `globalThis`
naugtur added a commit that referenced this pull request May 15, 2023
 - restrict engines.node to < 19.0.0 (#552)
 - Add `WebAssembly` scuttle globalThis exceptions - this is necessary as of Node.js 18 (#551)
 - Skip JSON files only for policy generation instead of limiting to js files. Current allowlist: cjs,js,mjs,ts (#474)
 - core/fix - remove console taming to that errors are logged to the console correctly (#493)
 - core: fix globalThis polyfill (#567)
 - Fix uncaught error when receiver is null in getPropertyDescriptorDeep (#463)
 - drop uneeded additionalOpts arg and migrate back into using scenario object (#471)
 - Wrap getters calling with try catch (#468)
 - Deprecate `global`,`self` as aliases for `globalThis` (#461)
naugtur added a commit that referenced this pull request May 15, 2023
 - restrict engines.node to < 19.0.0 (#552)
 - Add `WebAssembly` scuttle globalThis exceptions - this is necessary as of Node.js 18 (#551)
 - Policy generation now looks at .cjs, .mjs, .ts and .js files as opposed to only .js files (#474)
 - core/fix - remove console taming to that errors are logged to the console correctly (#493)
 - core: fix globalThis polyfill (#567)
 - Fix uncaught error when receiver is null in getPropertyDescriptorDeep (#463)
 - drop uneeded additionalOpts arg and migrate back into using scenario object (#471)
 - Wrap getters calling with try catch (#468)
 - Deprecate `global`,`self` as aliases for `globalThis` (#461)
naugtur added a commit that referenced this pull request May 15, 2023
 - fix: Restrict `engines.node` to < 19.0.0 (#552)
 - fix: Add `WebAssembly` to scuttle globalThis exceptions. This is necessary as of Node.js 18 (#551)
 - change: Policy generation now looks at .cjs, .mjs, .ts and .js files as opposed to only .js files (#474)
 - fix: Remove console taming so that errors are logged to the console correctly (#493)
 - fix: Fix globalThis polyfill (#567)
 - fix: Handle error when receiver is null in getPropertyDescriptorDeep (#463)
 - fix: Drop unnecessary additionalOpts arg and migrate back into using scenario object (#471)
 - fix: Catch errors thrown when calling property getters (#468)
 - change: Deprecate `global`,`self` as aliases for `globalThis` (#461)
naugtur added a commit that referenced this pull request May 15, 2023
 - change: Policy generation now looks at .cjs, .mjs, .ts and .js files as opposed to only .js files (#474)
 - change: Deprecate `global`,`self` as aliases for `globalThis` (#461)
 - fix: Restrict `engines.node` to < 19.0.0 (#552)
 - fix: Add `WebAssembly` to scuttle globalThis exceptions. This is necessary as of Node.js 18 (#551)
 - fix: Remove console taming so that errors are logged to the console correctly (#493)
 - fix: Fix globalThis polyfill (#567)
 - fix: Handle error when receiver is null in getPropertyDescriptorDeep (#463)
 - fix: Drop unnecessary additionalOpts arg and migrate back into using scenario object (#471)
 - fix: Catch errors thrown when calling property getters (#468)
legobeat added a commit that referenced this pull request May 15, 2023
- deps: lavamoat-core@14.0.0->14.1.0 (#576)
  - change: Policy generation now looks at .cjs, .mjs, .ts and .js files as opposed to only .js files (#474)
  - change: Deprecate `global`,`self` as aliases for `globalThis` (#461)
  - fix: Restrict `engines.node` to < 19.0.0 (#552)                                                - fix: Add `WebAssembly` to scuttle globalThis exceptions. This is necessary as of Node.js 18 (#551)
  - fix: Remove console taming so that errors are logged to the console correctly (#493)
  - fix: Fix globalThis polyfill (#567)                                                            - fix: Handle error when receiver is null in getPropertyDescriptorDeep (#463)
  - fix: Drop unnecessary additionalOpts arg and migrate back into using scenario object (#471)
  - fix: Catch errors thrown when calling property getters (#468)
- deps: dependency maintenance bumps
  - json-stable-stringify@^1.0.1->^1.0.2
  - convert-source-map@^1.9.0->^2.0.0
  - espree@^7.3.0->^9.5.2
legobeat pushed a commit that referenced this pull request May 15, 2023
 - change: Policy generation now looks at .cjs, .mjs, .ts and .js files as opposed to only .js files (#474)
 - change: Deprecate `global`,`self` as aliases for `globalThis` (#461)
 - fix: Restrict `engines.node` to < 19.0.0 (#552)
 - fix: Add `WebAssembly` to scuttle globalThis exceptions. This is necessary as of Node.js 18 (#551)
 - fix: Remove console taming so that errors are logged to the console correctly (#493)
 - fix: Fix globalThis polyfill (#567)
 - fix: Handle error when receiver is null in getPropertyDescriptorDeep (#463)
 - fix: Drop unnecessary additionalOpts arg and migrate back into using scenario object (#471)
 - fix: Catch errors thrown when calling property getters (#468)
legobeat added a commit that referenced this pull request May 15, 2023
- deps: lavamoat-core@14.0.0->14.1.0 (#576)
  - change: Policy generation now looks at .cjs, .mjs, .ts and .js files as opposed to only .js files (#474)
  - change: Deprecate `global`,`self` as aliases for `globalThis` (#461)
  - fix: Restrict `engines.node` to < 19.0.0 (#552)                                                - fix: Add `WebAssembly` to scuttle globalThis exceptions. This is necessary as of Node.js 18 (#551)
  - fix: Remove console taming so that errors are logged to the console correctly (#493)
  - fix: Fix globalThis polyfill (#567)                                                            - fix: Handle error when receiver is null in getPropertyDescriptorDeep (#463)
  - fix: Drop unnecessary additionalOpts arg and migrate back into using scenario object (#471)
  - fix: Catch errors thrown when calling property getters (#468)
- deps: dependency maintenance bumps
  - json-stable-stringify@^1.0.1->^1.0.2
  - convert-source-map@^1.9.0->^2.0.0
  - espree@^7.3.0->^9.5.2
legobeat pushed a commit that referenced this pull request May 15, 2023
- change: Policy generation now looks at .cjs, .mjs, .ts and .js files as opposed to only .js files (#474)
- change: Deprecate `global`,`self` as aliases for `globalThis` (#461)
- fix: Restrict `engines.node` to < 19.0.0 (#552)
- fix: Add `WebAssembly` to scuttle globalThis exceptions. This is necessary as of Node.js 18 (#551)
- fix: Remove console taming so that errors are logged to the console correctly (#493)
- fix: Fix globalThis polyfill (#567)
- fix: Handle error when receiver is null in getPropertyDescriptorDeep (#463)
- fix: Drop unnecessary additionalOpts arg and migrate back into using scenario object (#471)
- fix: Catch errors thrown when calling property getters (#468)
- deps: remove object.fromentries, fromentries
legobeat added a commit that referenced this pull request May 15, 2023
- deps: lavamoat-core@14.0.0->14.1.0 (#576)
  - change: Policy generation now looks at .cjs, .mjs, .ts and .js files as opposed to only .js files (#474)
  - change: Deprecate `global`,`self` as aliases for `globalThis` (#461)
  - fix: Restrict `engines.node` to < 19.0.0 (#552)                                                - fix: Add `WebAssembly` to scuttle globalThis exceptions. This is necessary as of Node.js 18 (#551)
  - fix: Remove console taming so that errors are logged to the console correctly (#493)
  - fix: Fix globalThis polyfill (#567)                                                            - fix: Handle error when receiver is null in getPropertyDescriptorDeep (#463)
  - fix: Drop unnecessary additionalOpts arg and migrate back into using scenario object (#471)
  - fix: Catch errors thrown when calling property getters (#468)
- deps: dependency maintenance bumps
  - json-stable-stringify@^1.0.1->^1.0.2
  - convert-source-map@^1.9.0->^2.0.0
  - espree@^7.3.0->^9.5.2
naugtur added a commit that referenced this pull request May 17, 2023
 - change: Policy generation now looks at .cjs, .mjs, .ts and .js files as opposed to only .js files (#474)
 - change: Deprecate `global`,`self` as aliases for `globalThis` (#461)
 - fix: Restrict `engines.node` to < 19.0.0 (#552)
 - fix: Add `WebAssembly` to scuttle globalThis exceptions. This is necessary as of Node.js 18 (#551)
 - fix: Remove console taming so that errors are logged to the console correctly (#493)
 - fix: Fix globalThis polyfill (#567)
 - fix: Handle error when receiver is null in getPropertyDescriptorDeep (#463)
 - fix: Drop unnecessary additionalOpts arg and migrate back into using scenario object (#471)
 - fix: Catch errors thrown when calling property getters (#468)
legobeat added a commit that referenced this pull request May 17, 2023
- deps: lavamoat-core@14.0.0->14.1.0 (#576)
  - change: Policy generation now looks at .cjs, .mjs, .ts and .js files as opposed to only .js files (#474)
  - change: Deprecate `global`,`self` as aliases for `globalThis` (#461)
  - fix: Restrict `engines.node` to < 19.0.0 (#552)                                                - fix: Add `WebAssembly` to scuttle globalThis exceptions. This is necessary as of Node.js 18 (#551)
  - fix: Remove console taming so that errors are logged to the console correctly (#493)
  - fix: Fix globalThis polyfill (#567)                                                            - fix: Handle error when receiver is null in getPropertyDescriptorDeep (#463)
  - fix: Drop unnecessary additionalOpts arg and migrate back into using scenario object (#471)
  - fix: Catch errors thrown when calling property getters (#468)
- deps: dependency maintenance bumps
  - json-stable-stringify@^1.0.1->^1.0.2
  - convert-source-map@^1.9.0->^2.0.0
  - espree@^7.3.0->^9.5.2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants