diff options
author | James M Snell <jasnell@gmail.com> | 2021-04-26 10:58:41 -0700 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2021-04-28 11:04:42 -0700 |
commit | 4af15df013dfb17c6cee0ae947039d26fc5bc34e (patch) | |
tree | 1752fc010be6f858dcb5c430d2d5902f8d1244de /test/parallel/test-fs-write-negativeoffset.js | |
parent | 896e5af1fd92dd3aa53a73309aa14eb7dab9ff1a (diff) | |
download | node-new-4af15df013dfb17c6cee0ae947039d26fc5bc34e.tar.gz |
src: fix validation of negative offset to avoid abort
Fixes: https://github.com/nodejs/node/issues/24640
Signed-off-by: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/38421
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Nitzan Uziely <linkgoron@gmail.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
Diffstat (limited to 'test/parallel/test-fs-write-negativeoffset.js')
-rw-r--r-- | test/parallel/test-fs-write-negativeoffset.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/test/parallel/test-fs-write-negativeoffset.js b/test/parallel/test-fs-write-negativeoffset.js new file mode 100644 index 0000000000..b1c6ed9039 --- /dev/null +++ b/test/parallel/test-fs-write-negativeoffset.js @@ -0,0 +1,55 @@ +'use strict'; + +// Tests that passing a negative offset does not crash the process + +const common = require('../common'); + +const { + join, +} = require('path'); + +const { + closeSync, + open, + write, + writeSync, +} = require('fs'); + +const assert = require('assert'); + +const tmpdir = require('../common/tmpdir'); +tmpdir.refresh(); + +const filename = join(tmpdir.path, 'test.txt'); + +open(filename, 'w+', common.mustSucceed((fd) => { + assert.throws(() => { + write(fd, Buffer.alloc(0), -1, common.mustNotCall()); + }, { + code: 'ERR_OUT_OF_RANGE', + }); + assert.throws(() => { + writeSync(fd, Buffer.alloc(0), -1); + }, { + code: 'ERR_OUT_OF_RANGE', + }); + closeSync(fd); +})); + +const filename2 = join(tmpdir.path, 'test2.txt'); + +// Make sure negative length's don't cause aborts either + +open(filename2, 'w+', common.mustSucceed((fd) => { + assert.throws(() => { + write(fd, Buffer.alloc(0), 0, -1, common.mustNotCall()); + }, { + code: 'ERR_OUT_OF_RANGE', + }); + assert.throws(() => { + writeSync(fd, Buffer.alloc(0), 0, -1); + }, { + code: 'ERR_OUT_OF_RANGE', + }); + closeSync(fd); +})); |