diff --git a/lib/tty.js b/lib/tty.js
index 106f8cc423ddf6..e61a5c3ac3f905 100644
--- a/lib/tty.js
+++ b/lib/tty.js
@@ -40,7 +40,8 @@ const {
 let readline;
 
 function isatty(fd) {
-  return NumberIsInteger(fd) && fd >= 0 && isTTY(fd);
+  return NumberIsInteger(fd) && fd >= 0 && fd <= 2147483647 &&
+         isTTY(fd);
 }
 
 function ReadStream(fd, options) {
diff --git a/test/pseudo-tty/test-tty-isatty.js b/test/pseudo-tty/test-tty-isatty.js
index 3a7b2940311221..ad81a4c6eff92b 100644
--- a/test/pseudo-tty/test-tty-isatty.js
+++ b/test/pseudo-tty/test-tty-isatty.js
@@ -10,6 +10,7 @@ strictEqual(isatty(2), true, 'stderr reported to not be a tty, but it is');
 
 strictEqual(isatty(-1), false, '-1 reported to be a tty, but it is not');
 strictEqual(isatty(55555), false, '55555 reported to be a tty, but it is not');
+strictEqual(isatty(2 ** 31), false, '2^31 reported to be a tty, but it is not');
 strictEqual(isatty(1.1), false, '1.1 reported to be a tty, but it is not');
 strictEqual(isatty('1'), false, '\'1\' reported to be a tty, but it is not');
 strictEqual(isatty({}), false, '{} reported to be a tty, but it is not');