diff --git a/lib/fs.js b/lib/fs.js index 1fd40b9f4fcada..9aa4eaa6a562ec 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -536,8 +536,8 @@ fs.readFileSync = function(path, options) { // Used by binding.open and friends function stringToFlags(flag) { - // Only mess with strings - if (typeof flag !== 'string') { + // Return early if it's a number + if (typeof flag === 'number') { return flag; } diff --git a/test/parallel/test-fs-open-flags.js b/test/parallel/test-fs-open-flags.js index 16b3d35cae5a49..cf451b4f8d5d95 100644 --- a/test/parallel/test-fs-open-flags.js +++ b/test/parallel/test-fs-open-flags.js @@ -34,3 +34,18 @@ assert.equal(fs._stringToFlags('xa+'), O_APPEND | O_CREAT | O_RDWR | O_EXCL); .forEach(function(flags) { assert.throws(function() { fs._stringToFlags(flags); }); }); + +assert.throws( + () => fs._stringToFlags({}), + /Unknown file open flag: \[object Object\]/ +); + +assert.throws( + () => fs._stringToFlags(true), + /Unknown file open flag: true/ +); + +assert.throws( + () => fs._stringToFlags(null), + /Unknown file open flag: null/ +);