diff options
-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"); +}); |