diff --git a/packages/safe-chain/bin/aikido-npm.js b/packages/safe-chain/bin/aikido-npm.js index 4176db1..d8b8c3e 100755 --- a/packages/safe-chain/bin/aikido-npm.js +++ b/packages/safe-chain/bin/aikido-npm.js @@ -6,7 +6,9 @@ import { initializePackageManager } from "../src/packagemanager/currentPackageMa const packageManagerName = "npm"; initializePackageManager(packageManagerName, getNpmVersion()); -await main(process.argv.slice(2)); +var exitCode = await main(process.argv.slice(2)); + +process.exit(exitCode); function getNpmVersion() { try { diff --git a/packages/safe-chain/bin/aikido-npx.js b/packages/safe-chain/bin/aikido-npx.js index 067608c..7f06c7c 100755 --- a/packages/safe-chain/bin/aikido-npx.js +++ b/packages/safe-chain/bin/aikido-npx.js @@ -5,4 +5,6 @@ import { initializePackageManager } from "../src/packagemanager/currentPackageMa const packageManagerName = "npx"; initializePackageManager(packageManagerName, process.versions.node); -await main(process.argv.slice(2)); +var exitCode = await main(process.argv.slice(2)); + +process.exit(exitCode); diff --git a/packages/safe-chain/bin/aikido-pnpm.js b/packages/safe-chain/bin/aikido-pnpm.js index e7bac47..7177159 100755 --- a/packages/safe-chain/bin/aikido-pnpm.js +++ b/packages/safe-chain/bin/aikido-pnpm.js @@ -5,4 +5,6 @@ import { initializePackageManager } from "../src/packagemanager/currentPackageMa const packageManagerName = "pnpm"; initializePackageManager(packageManagerName, process.versions.node); -await main(process.argv.slice(2)); +var exitCode = await main(process.argv.slice(2)); + +process.exit(exitCode); diff --git a/packages/safe-chain/bin/aikido-pnpx.js b/packages/safe-chain/bin/aikido-pnpx.js index 25884ce..4bb6840 100755 --- a/packages/safe-chain/bin/aikido-pnpx.js +++ b/packages/safe-chain/bin/aikido-pnpx.js @@ -5,4 +5,6 @@ import { initializePackageManager } from "../src/packagemanager/currentPackageMa const packageManagerName = "pnpx"; initializePackageManager(packageManagerName, process.versions.node); -await main(process.argv.slice(2)); +var exitCode = await main(process.argv.slice(2)); + +process.exit(exitCode); diff --git a/packages/safe-chain/bin/aikido-yarn.js b/packages/safe-chain/bin/aikido-yarn.js index a0eaaf6..002a956 100755 --- a/packages/safe-chain/bin/aikido-yarn.js +++ b/packages/safe-chain/bin/aikido-yarn.js @@ -5,4 +5,6 @@ import { initializePackageManager } from "../src/packagemanager/currentPackageMa const packageManagerName = "yarn"; initializePackageManager(packageManagerName, process.versions.node); -await main(process.argv.slice(2)); +var exitCode = await main(process.argv.slice(2)); + +process.exit(exitCode); diff --git a/packages/safe-chain/src/main.js b/packages/safe-chain/src/main.js index 1d259c9..916a81f 100644 --- a/packages/safe-chain/src/main.js +++ b/packages/safe-chain/src/main.js @@ -27,5 +27,5 @@ export async function main(args) { await proxy.stopServer(); proxy.verifyNoMaliciousPackages(); - process.exit(result.status); + return result.status; } diff --git a/packages/safe-chain/src/packagemanager/npm/dependencyScanner/dryRunScanner.js b/packages/safe-chain/src/packagemanager/npm/dependencyScanner/dryRunScanner.js index 59cd236..6189b2f 100644 --- a/packages/safe-chain/src/packagemanager/npm/dependencyScanner/dryRunScanner.js +++ b/packages/safe-chain/src/packagemanager/npm/dependencyScanner/dryRunScanner.js @@ -9,7 +9,7 @@ export function dryRunScanner(scannerOptions) { }; } -async function scanDependencies(scannerOptions, args) { +function scanDependencies(scannerOptions, args) { let dryRunArgs = args; if (scannerOptions?.dryRunCommand) { diff --git a/packages/safe-chain/src/registryProxy/registryProxy.js b/packages/safe-chain/src/registryProxy/registryProxy.js index c2812de..9155c27 100644 --- a/packages/safe-chain/src/registryProxy/registryProxy.js +++ b/packages/safe-chain/src/registryProxy/registryProxy.js @@ -42,7 +42,7 @@ export function mergeSafeChainProxyEnvironmentVariables(env) { const upperKey = key.toUpperCase(); if (!proxyEnv[upperKey]) { - proxyEnv[upperKey] = env[key]; + proxyEnv[key] = env[key]; } } @@ -104,7 +104,8 @@ function handleConnect(req, clientSocket, head) { async function isAllowedUrl(url) { const { packageName, version } = parsePackageFromUrl(url); - // This happens when the URL is not a tarball download url. + // packageName and version are undefined when the URL is not a package download + // In that case, we can allow the request to proceed if (!packageName || !version) { return true; } @@ -123,6 +124,7 @@ async function isAllowedUrl(url) { function verifyNoMaliciousPackages() { if (state.blockedRequests.length === 0) { + // No malicious packages were blocked, so nothing to block return; }