From 3ccdf8ad228379703e721c179339c332add0842c Mon Sep 17 00:00:00 2001 From: Christopher Beeson Date: Sat, 18 Apr 2020 16:49:25 -0400 Subject: [PATCH] src: fix empty-named env var assertion failure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-By: David Carlier Reviewed-By: James M Snell Reviewed-By: Franziska Hinkelmann Reviewed-By: Zeyu Yang Reviewed-By: Anna Henningsen Reviewed-By: Juan José Arboleda --- src/node_env_var.cc | 2 +- test/parallel/test-process-env.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/node_env_var.cc b/src/node_env_var.cc index 9df5ca82202..8fed12367f8 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 0e06306634c..4ece826e8b9 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); +}