@sussudio/base
Version:
Internal APIs for VS Code's utilities and user interface building blocks.
52 lines (51 loc) • 1.83 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { isLinux, isMacintosh } from './platform.mjs';
/**
* Sanitizes a VS Code process environment by removing all Electron/VS Code-related values.
*/
export function sanitizeProcessEnvironment(env, ...preserve) {
const set = preserve.reduce((set, key) => {
set[key] = true;
return set;
}, {});
const keysToRemove = [/^ELECTRON_.+$/, /^VSCODE_(?!SHELL_LOGIN).+$/, /^SNAP(|_.*)$/, /^GDK_PIXBUF_.+$/];
const envKeys = Object.keys(env);
envKeys
.filter((key) => !set[key])
.forEach((envKey) => {
for (let i = 0; i < keysToRemove.length; i++) {
if (envKey.search(keysToRemove[i]) !== -1) {
delete env[envKey];
break;
}
}
});
}
/**
* Remove dangerous environment variables that have caused crashes
* in forked processes (i.e. in ELECTRON_RUN_AS_NODE processes)
*
* @param env The env object to change
*/
export function removeDangerousEnvVariables(env) {
if (!env) {
return;
}
// Unset `DEBUG`, as an invalid value might lead to process crashes
// See https://github.com/microsoft/vscode/issues/130072
delete env['DEBUG'];
if (isMacintosh) {
// Unset `DYLD_LIBRARY_PATH`, as it leads to process crashes
// See https://github.com/microsoft/vscode/issues/104525
// See https://github.com/microsoft/vscode/issues/105848
delete env['DYLD_LIBRARY_PATH'];
}
if (isLinux) {
// Unset `LD_PRELOAD`, as it might lead to process crashes
// See https://github.com/microsoft/vscode/issues/134177
delete env['LD_PRELOAD'];
}
}