diff options
author | 2023-01-30 22:20:29 +0200 | |
---|---|---|
committer | 2023-01-30 12:20:29 -0800 | |
commit | ec2c16fefa8b98efaa1ccf84f18eea0a12c1c9ef (patch) | |
tree | 7a955a309c28936144713d08ac13becc413c8b66 | |
parent | c11bb9355267fbad50f82fa47bc654d5edbf5747 (diff) | |
download | bun-ec2c16fefa8b98efaa1ccf84f18eea0a12c1c9ef.tar.gz bun-ec2c16fefa8b98efaa1ccf84f18eea0a12c1c9ef.tar.zst bun-ec2c16fefa8b98efaa1ccf84f18eea0a12c1c9ef.zip |
fix `assert()` crash (#1941)
-rw-r--r-- | src/string_immutable.zig | 2 | ||||
-rw-r--r-- | test/bun.js/buffer.test.js | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/string_immutable.zig b/src/string_immutable.zig index a437baa69..e949892e1 100644 --- a/src/string_immutable.zig +++ b/src/string_immutable.zig @@ -1419,7 +1419,7 @@ pub fn convertUTF8BytesIntoUTF16(sequence: *const [4]u8) UTF16Replacement { switch (len) { 2 => { if (Environment.allow_assert) - assert(sequence[0] >= 0xC2); + assert(sequence[0] >= 0xC0); if (Environment.allow_assert) assert(sequence[0] <= 0xDF); if (sequence[1] < 0x80 or sequence[1] > 0xBF) { diff --git a/test/bun.js/buffer.test.js b/test/bun.js/buffer.test.js index 1971fed8c..d1ed5a496 100644 --- a/test/bun.js/buffer.test.js +++ b/test/bun.js/buffer.test.js @@ -2813,3 +2813,11 @@ test("Buffer.byteLength", () => { ); } }); + +it("should not crash on invalid UTF-8 byte sequence", () => { + const buf = Buffer.from([0xC0, 0xFD]).toString(); + expect(buf.length).toBe(2); + const str = buf.toString(); + expect(str.length).toBe(2); + expect(str).toBe("\uFFFD\uFFFD"); +}); |