UNPKG

@sussudio/base

Version:

Internal APIs for VS Code's utilities and user interface building blocks.

52 lines (51 loc) 1.83 kB
/*--------------------------------------------------------------------------------------------- * 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']; } }