From 1298d4736e83e0cb2d1a3cf67662ee2e5749147e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCrg=C3=BCn=20Day=C4=B1o=C4=9Flu?= Date: Wed, 26 Feb 2025 22:17:31 +0100 Subject: [PATCH] timers: check for immediate instance in clearImmediate --- lib/timers.js | 2 +- test/parallel/test-timers-invalid-clear.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 test/parallel/test-timers-invalid-clear.js diff --git a/lib/timers.js b/lib/timers.js index 8884137a808174..5a5e89f0bb420b 100644 --- a/lib/timers.js +++ b/lib/timers.js @@ -301,7 +301,7 @@ ObjectDefineProperty(setImmediate, customPromisify, { * @returns {void} */ function clearImmediate(immediate) { - if (!immediate || immediate._destroyed) + if (!immediate?._onImmediate || immediate._destroyed) return; immediateInfo[kCount]--; diff --git a/test/parallel/test-timers-invalid-clear.js b/test/parallel/test-timers-invalid-clear.js new file mode 100644 index 00000000000000..b7d046794c5dee --- /dev/null +++ b/test/parallel/test-timers-invalid-clear.js @@ -0,0 +1,13 @@ +'use strict'; + +const common = require('../common'); + +// clearImmediate should be a noop if anything other than an Immediate +// is passed to it. + +const t = setTimeout(common.mustCall()); + +clearImmediate(t); + +setTimeout(common.mustCall()); +setTimeout(common.mustCall());