mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 07:14:47 -05:00
fix(cli/ops/net): add write permissions for unixpackets datagrams & unix socket (#8511)
Fixes #7781
This commit is contained in:
parent
ff3c5897ea
commit
59f10b3604
2 changed files with 40 additions and 1 deletions
|
@ -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?;
|
||||
|
|
|
@ -65,6 +65,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 },
|
||||
|
|
Loading…
Reference in a new issue