mirror of
https://github.com/denoland/deno.git
synced 2024-12-01 16:51:13 -05:00
74fc66da11
`--allow-run` even with an allow list has essentially been `--allow-all`... this locks it down more. 1. Resolves allow list for `--allow-run=` on startup to an absolute path, then uses these paths when evaluating if a command can execute. Also, adds these paths to `--deny-write` 1. Resolves the environment (cwd and env vars) before evaluating permissions and before executing a command. Then uses this environment to evaluate the permissions and then evaluate the command.
34 lines
750 B
TypeScript
34 lines
750 B
TypeScript
const binaryName = Deno.build.os === "windows" ? "deno.exe" : "deno";
|
|
const pathSep = Deno.build.os === "windows" ? "\\" : "/";
|
|
|
|
Deno.mkdirSync("subdir");
|
|
Deno.copyFileSync(binaryName, "subdir/" + binaryName);
|
|
|
|
try {
|
|
const commandResult = new Deno.Command(
|
|
binaryName,
|
|
{
|
|
env: { "PATH": Deno.cwd() + pathSep + "subdir" },
|
|
stdout: "inherit",
|
|
stderr: "inherit",
|
|
},
|
|
).outputSync();
|
|
|
|
console.log(commandResult.code);
|
|
} catch (err) {
|
|
console.log(err);
|
|
}
|
|
|
|
try {
|
|
const child = Deno.run(
|
|
{
|
|
cmd: [binaryName],
|
|
env: { "PATH": Deno.cwd() + pathSep + "subdir" },
|
|
stdout: "inherit",
|
|
stderr: "inherit",
|
|
},
|
|
);
|
|
console.log((await child.status()).code);
|
|
} catch (err) {
|
|
console.log(err);
|
|
}
|