From ec2c16fefa8b98efaa1ccf84f18eea0a12c1c9ef Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Mon, 30 Jan 2023 22:20:29 +0200 Subject: fix `assert()` crash (#1941) --- src/string_immutable.zig | 2 +- test/bun.js/buffer.test.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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"); +}); -- cgit v1.2.3