From 45dbcbef90d9002efbe3c67202d0338eb243b2a1 Mon Sep 17 00:00:00 2001 From: Zijian Liu Date: Fri, 4 Dec 2020 13:25:15 +0800 Subject: [PATCH] readline: cursorTo throw error on NaN Fixes: https://github.com/nodejs/node/issues/36301 PR-URL: https://github.com/nodejs/node/pull/36379 Reviewed-By: Zeyu Yang Reviewed-By: Antoine du Hamel Reviewed-By: Rich Trott Reviewed-By: Michael Dawson Reviewed-By: Matteo Collina Reviewed-By: Anna Henningsen --- lib/readline.js | 5 +++++ test/parallel/test-readline-csi.js | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lib/readline.js b/lib/readline.js index d2fd9924b0e6b4..352b7ed64f06ba 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -1236,6 +1236,11 @@ function cursorTo(stream, x, y, callback) { y = undefined; } + if (NumberIsNaN(x)) + throw new ERR_INVALID_ARG_VALUE('x', x); + if (NumberIsNaN(y)) + throw new ERR_INVALID_ARG_VALUE('y', y); + if (stream == null || (typeof x !== 'number' && typeof y !== 'number')) { if (typeof callback === 'function') process.nextTick(callback, null); diff --git a/test/parallel/test-readline-csi.js b/test/parallel/test-readline-csi.js index 5c0080d3d41910..13dbbfa30f6fa2 100644 --- a/test/parallel/test-readline-csi.js +++ b/test/parallel/test-readline-csi.js @@ -161,3 +161,16 @@ assert.strictEqual(writable.data, '\x1b[2G'); assert.throws(() => { readline.cursorTo(writable, 1, 1, null); }, /ERR_INVALID_CALLBACK/); + +// Verify that cursorTo() throws if x or y is NaN. +assert.throws(() => { + readline.cursorTo(writable, NaN); +}, /ERR_INVALID_ARG_VALUE/); + +assert.throws(() => { + readline.cursorTo(writable, 1, NaN); +}, /ERR_INVALID_ARG_VALUE/); + +assert.throws(() => { + readline.cursorTo(writable, NaN, NaN); +}, /ERR_INVALID_ARG_VALUE/);