| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 9c5beab commit 993bb3b
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -569,6 +569,7 @@ function normalizeSpawnArguments(file, args, options) { | |||
| 569 | 569 | else | |
| 570 | 570 | validateObject(options, 'options'); | |
| 571 | 571 | ||
| 572 | + options = { __proto__: null, ...options }; | ||
| 572 | 573 | let cwd = options.cwd; | |
| 573 | 574 | ||
| 574 | 575 | // Validate the cwd, if present. | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,7 +1,7 @@ | |||
| 1 | 1 | import * as common from '../common/index.mjs'; | |
| 2 | 2 | import * as fixtures from '../common/fixtures.mjs'; | |
| 3 | 3 | import { EOL } from 'node:os'; | |
| 4 | - import { strictEqual } from 'node:assert'; | ||
| 4 | + import { strictEqual, notStrictEqual, throws } from 'node:assert'; | ||
| 5 | 5 | import cp from 'node:child_process'; | |
| 6 | 6 | ||
| 7 | 7 | // TODO(LiviaMedeiros): test on different platforms | |
@@ -57,3 +57,35 @@ for (const tamperedUID of [0, 1, 999, 1000, 0n, 'gwak']) { | |||
| 57 | 57 | ||
| 58 | 58 | delete Object.prototype.execPath; | |
| 59 | 59 | } | |
| 60 | + | ||
| 61 | + for (const shellCommandArgument of ['-L && echo "tampered"']) { | ||
| 62 | + Object.prototype.shell = true; | ||
| 63 | + const cmd = 'pwd'; | ||
| 64 | + let cmdExitCode = ''; | ||
| 65 | + | ||
| 66 | + const program = cp.spawn(cmd, [shellCommandArgument], { cwd: expectedCWD }); | ||
| 67 | + program.stderr.on('data', common.mustCall()); | ||
| 68 | + program.stdout.on('data', common.mustNotCall()); | ||
| 69 | + | ||
| 70 | + program.on('exit', common.mustCall((code) => { | ||
| 71 | + notStrictEqual(code, 0); | ||
| 72 | + })); | ||
| 73 | + | ||
| 74 | + cp.execFile(cmd, [shellCommandArgument], { cwd: expectedCWD }, | ||
| 75 | + common.mustCall((err) => { | ||
| 76 | + notStrictEqual(err.code, 0); | ||
| 77 | + }) | ||
| 78 | + ); | ||
| 79 | + | ||
| 80 | + throws(() => { | ||
| 81 | + cp.execFileSync(cmd, [shellCommandArgument], { cwd: expectedCWD }); | ||
| 82 | + }, (e) => { | ||
| 83 | + notStrictEqual(e.status, 0); | ||
| 84 | + return true; | ||
| 85 | + }); | ||
| 86 | + | ||
| 87 | + cmdExitCode = cp.spawnSync(cmd, [shellCommandArgument], { cwd: expectedCWD }).status; | ||
| 88 | + notStrictEqual(cmdExitCode, 0); | ||
| 89 | + | ||
| 90 | + delete Object.prototype.shell; | ||
| 91 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments