diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/ops/net.rs | 3 | ||||
-rw-r--r-- | cli/tests/unit/net_test.ts | 38 |
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 }, }, |