diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-03-04 17:17:05 +0100 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2019-03-07 00:40:21 +0100 |
commit | 31147c47043827dd8b0a08c1befe4110c8d9174f (patch) | |
tree | e4f50fae8ff3c74a3d253a5d3232d3f7f70252a6 /test | |
parent | ceb73e714afce53c4d736c1495e800e86d3cd3f2 (diff) | |
download | android-node-v8-31147c47043827dd8b0a08c1befe4110c8d9174f.tar.gz android-node-v8-31147c47043827dd8b0a08c1befe4110c8d9174f.tar.bz2 android-node-v8-31147c47043827dd8b0a08c1befe4110c8d9174f.zip |
buffer: do not affect memory after target for utf16 write
Do not write one character too much before shifting the whole result
to the left when using UTF16-LE, possibly overwriting already-used
memory while doing so.
Fixes: https://github.com/nodejs/node/issues/26422
PR-URL: https://github.com/nodejs/node/pull/26432
Fixes: https://github.com/nodejs/node/issues/26422
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Minwoo Jung <minwoo@nodesource.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-buffer-write.js | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/test/parallel/test-buffer-write.js b/test/parallel/test-buffer-write.js index c0c5e9c88f..a0b86844d4 100644 --- a/test/parallel/test-buffer-write.js +++ b/test/parallel/test-buffer-write.js @@ -91,3 +91,11 @@ assert.strictEqual(Buffer.compare(z, Buffer.alloc(4, 0)), 0); // Large overrun could corrupt the process assert.strictEqual(Buffer.alloc(4) .write('ыыыыыы'.repeat(100), 3, 'utf16le'), 0); + +{ + // .write() does not affect the byte after the written-to slice of the Buffer. + // Refs: https://github.com/nodejs/node/issues/26422 + const buf = Buffer.alloc(8); + assert.strictEqual(buf.write('ыы', 1, 'utf16le'), 4); + assert.deepStrictEqual([...buf], [0, 0x4b, 0x04, 0x4b, 0x04, 0, 0, 0]); +} |