summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/ops/net.rs3
-rw-r--r--cli/tests/unit/net_test.ts38
2 files changed, 40 insertions, 1 deletions
diff --git a/cli/ops/net.rs b/cli/ops/net.rs
index 2be65e1ec..98ff83fc0 100644
--- a/cli/ops/net.rs
+++ b/cli/ops/net.rs
@@ -229,7 +229,7 @@ async fn op_datagram_send(
let address_path = Path::new(&args.path);
{
let s = state.borrow();
- s.borrow::<Permissions>().check_read(&address_path)?;
+ s.borrow::<Permissions>().check_write(&address_path)?;
}
let mut state = state.borrow_mut();
let resource = state
@@ -308,6 +308,7 @@ async fn op_connect(
{
let state_ = state.borrow();
state_.borrow::<Permissions>().check_read(&address_path)?;
+ state_.borrow::<Permissions>().check_write(&address_path)?;
}
let path = args.path;
let unix_stream = net_unix::UnixStream::connect(Path::new(&path)).await?;
diff --git a/cli/tests/unit/net_test.ts b/cli/tests/unit/net_test.ts
index b1f4f87ca..890a1bb62 100644
--- a/cli/tests/unit/net_test.ts
+++ b/cli/tests/unit/net_test.ts
@@ -66,6 +66,44 @@ unitTest(
);
unitTest(
+ { ignore: Deno.build.os === "windows", perms: { read: true } },
+ function netUnixListenWritePermission(): void {
+ try {
+ const filePath = Deno.makeTempFileSync();
+ const socket = Deno.listen({
+ path: filePath,
+ transport: "unix",
+ });
+ assert(socket.addr.transport === "unix");
+ assertEquals(socket.addr.path, filePath);
+ socket.close();
+ } catch (e) {
+ assert(!!e);
+ assert(e instanceof Deno.errors.PermissionDenied);
+ }
+ },
+);
+
+unitTest(
+ { ignore: Deno.build.os === "windows", perms: { read: true } },
+ function netUnixPacketListenWritePermission(): void {
+ try {
+ const filePath = Deno.makeTempFileSync();
+ const socket = Deno.listenDatagram({
+ path: filePath,
+ transport: "unixpacket",
+ });
+ assert(socket.addr.transport === "unixpacket");
+ assertEquals(socket.addr.path, filePath);
+ socket.close();
+ } catch (e) {
+ assert(!!e);
+ assert(e instanceof Deno.errors.PermissionDenied);
+ }
+ },
+);
+
+unitTest(
{
perms: { net: true },
},