aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/string_immutable.zig2
-rw-r--r--test/bun.js/buffer.test.js8
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");
+});