summaryrefslogtreecommitdiff
path: root/runtime/ops/signal.rs
diff options
context:
space:
mode:
authorLeo Kettmeir <crowlkats@toaxl.com>2022-01-04 21:55:06 +0100
committerGitHub <noreply@github.com>2022-01-04 21:55:06 +0100
commitb46da660563b175722937d9f29d45029bd6a0a74 (patch)
treee23d18bb70ba54ddba87838adb067fa1136046d8 /runtime/ops/signal.rs
parent9872fbf189b7f843b15442731f2e18ffafc3a284 (diff)
fix(signals): prevent panic when listening to forbidden signals (#13273)
Diffstat (limited to 'runtime/ops/signal.rs')
-rw-r--r--runtime/ops/signal.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/runtime/ops/signal.rs b/runtime/ops/signal.rs
index db30c66d8..f260c611c 100644
--- a/runtime/ops/signal.rs
+++ b/runtime/ops/signal.rs
@@ -181,8 +181,14 @@ fn op_signal_bind(
) -> Result<ResourceId, AnyError> {
super::check_unstable(state, "Deno.signal");
let signo = signal_str_to_int(&sig)?;
+ if signal_hook_registry::FORBIDDEN.contains(&signo) {
+ return Err(type_error(format!(
+ "Binding to signal '{}' is not allowed",
+ sig
+ )));
+ }
let resource = SignalStreamResource {
- signal: AsyncRefCell::new(signal(SignalKind::from_raw(signo)).unwrap()),
+ signal: AsyncRefCell::new(signal(SignalKind::from_raw(signo))?),
cancel: Default::default(),
};
let rid = state.resource_table.add(resource);