From 9e2c90f8eaf534ed4bfc3431ccda0fc944cfdcb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Reis?= Date: Thu, 21 May 2020 04:11:46 +0100 Subject: [PATCH] fixup! win: allow skipping the supported platform check --- doc/api/cli.md | 5 +++-- src/node_main.cc | 16 +++++++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/doc/api/cli.md b/doc/api/cli.md index e4cd18cc72f2ce..14015570169bfb 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -1341,8 +1341,9 @@ Overriding this value to an empty string (`''`) will use the built-in REPL. added: REPLACEME --> -Skips the check for a supported platform that happens during Node.js startup. -Using this might lead to issues during execution. +If `value` equals `'1'`, the check for a supported platform is skipped during +Node.js startup. Node.js might not execute correctly. Any issues encountered +on unsupported platforms will not be fixed. ### `NODE_TLS_REJECT_UNAUTHORIZED=value` diff --git a/src/node_main.cc b/src/node_main.cc index d79e8f695e6bb8..e08ae8e5309b20 100644 --- a/src/node_main.cc +++ b/src/node_main.cc @@ -28,18 +28,24 @@ #include #define SKIP_CHECK_VAR "NODE_SKIP_PLATFORM_CHECK" +#define SKIP_CHECK_SIZE 1 +#define SKIP_CHECK_VALUE "1" int wmain(int argc, wchar_t* wargv[]) { // Windows Server 2012 (not R2) is supported until 10/10/2023, so we allow it // to run in the experimental support tier. + char buf[SKIP_CHECK_SIZE + 1]; if (!IsWindows8Point1OrGreater() && !(IsWindowsServer() && IsWindows8OrGreater()) && - GetEnvironmentVariableA(SKIP_CHECK_VAR, nullptr, 0) == 0) { + (GetEnvironmentVariableA(SKIP_CHECK_VAR, buf, sizeof(buf)) != + SKIP_CHECK_SIZE || + strncmp(buf, SKIP_CHECK_VALUE, SKIP_CHECK_SIZE + 1) != 0)) { fprintf(stderr, "This application is only supported on Windows 8.1, " - "Windows Server 2012 R2, or higher.\n" - "If the environment varaible " SKIP_CHECK_VAR - " is defined this check is skipped, but Node.js might " - "not execute correctly."); + "Windows Server 2012 R2, or\nhigher.\n" + "Setting the " SKIP_CHECK_VAR " environment variable " + "to 1 skips this\ncheck, but Node.js might not execute " + "correctly. Any issues encountered on\nunsupported " + "platforms will not be fixed."); exit(ERROR_EXE_MACHINE_TYPE_MISMATCH); }