aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alex Lam S.L <alexlamsl@gmail.com> 2023-01-30 22:20:29 +0200
committerGravatar GitHub <noreply@github.com> 2023-01-30 12:20:29 -0800
commitec2c16fefa8b98efaa1ccf84f18eea0a12c1c9ef (patch)
tree7a955a309c28936144713d08ac13becc413c8b66
parentc11bb9355267fbad50f82fa47bc654d5edbf5747 (diff)
downloadbun-ec2c16fefa8b98efaa1ccf84f18eea0a12c1c9ef.tar.gz
bun-ec2c16fefa8b98efaa1ccf84f18eea0a12c1c9ef.tar.zst
bun-ec2c16fefa8b98efaa1ccf84f18eea0a12c1c9ef.zip
fix `assert()` crash (#1941)
-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");
+});