summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Beeson <christopher@bl-ue.com>2020-04-18 16:49:25 -0400
committerRuben Bridgewater <ruben@bridgewater.de>2020-04-28 13:58:28 +0200
commit018de28bf3aa57b03b23d80b81e0208045926148 (patch)
treec31b920422ff51e5366da23404307f637c05d5b2
parent428fca1fc930b89a7dbca8e5114c5fc352bc3990 (diff)
downloadnode-new-018de28bf3aa57b03b23d80b81e0208045926148.tar.gz
src: fix empty-named env var assertion failure
Setting an environment variable with an empty name on Windows resulted in an assertion failure, because it was checked for an '=' sign at the beginning without verifying the length was greater than 0. Fixes: https://github.com/nodejs/node/issues/32920 Refs: https://github.com/nodejs/node/pull/27310 PR-URL: https://github.com/nodejs/node/pull/32921 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Zeyu Yang <himself65@outlook.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
-rw-r--r--src/node_env_var.cc2
-rw-r--r--test/parallel/test-process-env.js8
2 files changed, 9 insertions, 1 deletions
diff --git a/src/node_env_var.cc b/src/node_env_var.cc
index 9df5ca8220..8fed12367f 100644
--- a/src/node_env_var.cc
+++ b/src/node_env_var.cc
@@ -121,7 +121,7 @@ void RealEnvStore::Set(Isolate* isolate,
node::Utf8Value val(isolate, value);
#ifdef _WIN32
- if (key[0] == L'=') return;
+ if (key.length() > 0 && key[0] == L'=') return;
#endif
uv_os_setenv(*key, *val);
DateTimeConfigurationChangeNotification(isolate, key);
diff --git a/test/parallel/test-process-env.js b/test/parallel/test-process-env.js
index 0e06306634..4ece826e8b 100644
--- a/test/parallel/test-process-env.js
+++ b/test/parallel/test-process-env.js
@@ -106,3 +106,11 @@ if (common.isWindows) {
const keys = Object.keys(process.env);
assert.ok(keys.length > 0);
}
+
+// Setting environment variables on Windows with empty names should not cause
+// an assertion failure.
+// https://github.com/nodejs/node/issues/32920
+{
+ process.env[''] = '';
+ assert.strictEqual(process.env[''], undefined);
+}