summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTimothy Gu <timothygu99@gmail.com>2017-09-20 14:23:31 -0700
committerAnna Henningsen <anna@addaleax.net>2018-06-06 19:43:55 +0200
commit147ea5e3d78effd6da8ea2bfbf6bb77b6aaf52da (patch)
tree1c4e8e980cca10050b0c84e40fd66cb84826bc89 /lib
parent39568e39d9adca89257b44acfc76d02836099767 (diff)
downloadandroid-node-v8-147ea5e3d78effd6da8ea2bfbf6bb77b6aaf52da.tar.gz
android-node-v8-147ea5e3d78effd6da8ea2bfbf6bb77b6aaf52da.tar.bz2
android-node-v8-147ea5e3d78effd6da8ea2bfbf6bb77b6aaf52da.zip
worker: restrict supported extensions
Only allow `.js` and `.mjs` extensions to provide future-proofing for file type detection. Refs: https://github.com/ayojs/ayo/pull/117 Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Olivia Hugger <olivia@fastmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> PR-URL: https://github.com/nodejs/node/pull/20876 Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Shingo Inoue <leko.noor@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: John-David Dalton <john.david.dalton@gmail.com> Reviewed-By: Gus Caplan <me@gus.host>
Diffstat (limited to 'lib')
-rw-r--r--lib/internal/errors.js3
-rw-r--r--lib/internal/worker.js13
2 files changed, 13 insertions, 3 deletions
diff --git a/lib/internal/errors.js b/lib/internal/errors.js
index d59531debb..54201d0d1e 100644
--- a/lib/internal/errors.js
+++ b/lib/internal/errors.js
@@ -849,4 +849,7 @@ E('ERR_WORKER_NEED_ABSOLUTE_PATH',
TypeError);
E('ERR_WORKER_UNSERIALIZABLE_ERROR',
'Serializing an uncaught exception failed', Error);
+E('ERR_WORKER_UNSUPPORTED_EXTENSION',
+ 'The worker script extension must be ".js" or ".mjs". Received "%s"',
+ TypeError);
E('ERR_ZLIB_INITIALIZATION_FAILED', 'Initialization failed', Error);
diff --git a/lib/internal/worker.js b/lib/internal/worker.js
index c982478b93..edd954d8a3 100644
--- a/lib/internal/worker.js
+++ b/lib/internal/worker.js
@@ -8,7 +8,8 @@ const util = require('util');
const {
ERR_INVALID_ARG_TYPE,
ERR_WORKER_NEED_ABSOLUTE_PATH,
- ERR_WORKER_UNSERIALIZABLE_ERROR
+ ERR_WORKER_UNSERIALIZABLE_ERROR,
+ ERR_WORKER_UNSUPPORTED_EXTENSION,
} = require('internal/errors').codes;
const { internalBinding } = require('internal/bootstrap/loaders');
@@ -136,8 +137,14 @@ class Worker extends EventEmitter {
throw new ERR_INVALID_ARG_TYPE('filename', 'string', filename);
}
- if (!options.eval && !path.isAbsolute(filename)) {
- throw new ERR_WORKER_NEED_ABSOLUTE_PATH(filename);
+ if (!options.eval) {
+ if (!path.isAbsolute(filename)) {
+ throw new ERR_WORKER_NEED_ABSOLUTE_PATH(filename);
+ }
+ const ext = path.extname(filename);
+ if (ext !== '.js' && ext !== '.mjs') {
+ throw new ERR_WORKER_UNSUPPORTED_EXTENSION(ext);
+ }
}
// Set up the C++ handle for the worker, as well as some internal wiring.