summaryrefslogtreecommitdiff
path: root/tests/specs/permission/write_allow_binary
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-09-04 14:51:24 +0200
committerGitHub <noreply@github.com>2024-09-04 14:51:24 +0200
commit74fc66da110ec20d12751e7a0922cea300314399 (patch)
treeb0b057b7539b506b8db39287cd799e7c9cbd526f /tests/specs/permission/write_allow_binary
parent334c842392e2587b8ca1d7cc7cc7d9231fc15286 (diff)
fix: lock down allow-run permissions more (#25370)
`--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.
Diffstat (limited to 'tests/specs/permission/write_allow_binary')
-rw-r--r--tests/specs/permission/write_allow_binary/__test__.jsonc5
-rw-r--r--tests/specs/permission/write_allow_binary/main.out6
-rw-r--r--tests/specs/permission/write_allow_binary/main.ts14
-rw-r--r--tests/specs/permission/write_allow_binary/sub.ts3
4 files changed, 28 insertions, 0 deletions
diff --git a/tests/specs/permission/write_allow_binary/__test__.jsonc b/tests/specs/permission/write_allow_binary/__test__.jsonc
new file mode 100644
index 000000000..a47fed572
--- /dev/null
+++ b/tests/specs/permission/write_allow_binary/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "tempDir": true,
+ "args": "run -A main.ts",
+ "output": "main.out"
+}
diff --git a/tests/specs/permission/write_allow_binary/main.out b/tests/specs/permission/write_allow_binary/main.out
new file mode 100644
index 000000000..e7c47f288
--- /dev/null
+++ b/tests/specs/permission/write_allow_binary/main.out
@@ -0,0 +1,6 @@
+Running...
+error: Uncaught (in promise) PermissionDenied: Requires write access to "binary[WILDLINE]", run again with the --allow-write flag
+Deno.writeTextFileSync(binaryName, "");
+ ^
+ at [WILDCARD]
+ at file:///[WILDLINE]sub.ts:3:6
diff --git a/tests/specs/permission/write_allow_binary/main.ts b/tests/specs/permission/write_allow_binary/main.ts
new file mode 100644
index 000000000..73deeab9a
--- /dev/null
+++ b/tests/specs/permission/write_allow_binary/main.ts
@@ -0,0 +1,14 @@
+const binaryName = Deno.build.os === "windows" ? "binary.exe" : "binary";
+Deno.copyFileSync(Deno.execPath(), binaryName);
+
+console.log("Running...");
+const result = new Deno.Command(
+ Deno.execPath(),
+ {
+ args: ["run", "--allow-write", `--allow-run=./${binaryName}`, "sub.ts"],
+ stderr: "inherit",
+ stdout: "inherit",
+ },
+).outputSync();
+
+console.assert(result.code == 1, "Expected failure");
diff --git a/tests/specs/permission/write_allow_binary/sub.ts b/tests/specs/permission/write_allow_binary/sub.ts
new file mode 100644
index 000000000..e865597b1
--- /dev/null
+++ b/tests/specs/permission/write_allow_binary/sub.ts
@@ -0,0 +1,3 @@
+const binaryName = Deno.build.os === "windows" ? "binary.exe" : "binary";
+
+Deno.writeTextFileSync(binaryName, "");