summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-03-04 17:17:05 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2019-03-07 00:40:21 +0100
commit31147c47043827dd8b0a08c1befe4110c8d9174f (patch)
treee4f50fae8ff3c74a3d253a5d3232d3f7f70252a6 /test
parentceb73e714afce53c4d736c1495e800e86d3cd3f2 (diff)
downloadandroid-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.js8
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]);
+}