aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-09-09 19:20:24 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-09-09 19:20:24 -0700
commit3d8edcb77b7579090ebf370f12ce6107f3b3fb04 (patch)
tree59547c1d80f1856432b9e0f264cae0780f019c6a /src
parentf496740c1926d2349434ba01ceddc6c8b6aadfa0 (diff)
downloadbun-3d8edcb77b7579090ebf370f12ce6107f3b3fb04.tar.gz
bun-3d8edcb77b7579090ebf370f12ce6107f3b3fb04.tar.zst
bun-3d8edcb77b7579090ebf370f12ce6107f3b3fb04.zip
Fix potential crash when returning an empty string
Diffstat (limited to 'src')
-rw-r--r--src/bun.js/base.zig16
-rw-r--r--src/bun.js/node/types.zig6
2 files changed, 22 insertions, 0 deletions
diff --git a/src/bun.js/base.zig b/src/bun.js/base.zig
index 8439ff7e1..eb3b84118 100644
--- a/src/bun.js/base.zig
+++ b/src/bun.js/base.zig
@@ -2399,6 +2399,8 @@ pub const ArrayBuffer = extern struct {
value: JSC.JSValue = JSC.JSValue.zero,
shared: bool = false,
+ pub const empty = ArrayBuffer{ .offset = 0, .len = 0, .byte_len = 0, .typed_array_type = .Uint8Array, .ptr = undefined };
+
pub const name = "Bun__ArrayBuffer";
pub const Stream = std.io.FixedBufferStream([]u8);
@@ -2580,6 +2582,11 @@ pub const MarkedArrayBuffer = struct {
};
}
+ pub const empty = MarkedArrayBuffer{
+ .allocator = null,
+ .buffer = ArrayBuffer.empty,
+ };
+
pub inline fn slice(this: *const @This()) []u8 {
return this.buffer.slice();
}
@@ -2608,6 +2615,15 @@ pub const MarkedArrayBuffer = struct {
if (!this.buffer.value.isEmptyOrUndefinedOrNull()) {
return this.buffer.value.asObjectRef();
}
+ if (this.buffer.byte_len == 0) {
+ return js.JSObjectMakeTypedArray(
+ ctx,
+ this.buffer.typed_array_type.toC(),
+ 0,
+ exception,
+ );
+ }
+
return js.JSObjectMakeTypedArrayWithBytesNoCopy(
ctx,
this.buffer.typed_array_type.toC(),
diff --git a/src/bun.js/node/types.zig b/src/bun.js/node/types.zig
index 457ddc012..313dad703 100644
--- a/src/bun.js/node/types.zig
+++ b/src/bun.js/node/types.zig
@@ -193,6 +193,9 @@ pub const StringOrBuffer = union(Tag) {
pub fn toJS(this: StringOrBuffer, ctx: JSC.C.JSContextRef, exception: JSC.C.ExceptionRef) JSC.C.JSValueRef {
return switch (this) {
.string => {
+ if (this.string.len == 0)
+ return JSC.ZigString.Empty.toValue(ctx).asObjectRef();
+
const input = this.string;
if (strings.toUTF16Alloc(bun.default_allocator, input, false) catch null) |utf16| {
bun.default_allocator.free(bun.constStrToU8(input));
@@ -240,6 +243,9 @@ pub const StringOrNodeBuffer = union(Tag) {
return switch (this) {
.string => {
const input = this.string;
+ if (this.string.len == 0)
+ return JSC.ZigString.Empty.toValue(ctx).asObjectRef();
+
if (strings.toUTF16Alloc(bun.default_allocator, input, false) catch null) |utf16| {
bun.default_allocator.free(bun.constStrToU8(input));
return JSC.ZigString.toExternalU16(utf16.ptr, utf16.len, ctx.ptr()).asObjectRef();
lt='Gravatar' /> Ciro Spaciari 3-8/+47 2023-09-04chore: fix typo (#4476)Gravatar Ai Hoshino 1-1/+1 2023-09-04fix(HTMLRewriter) buffer response before transform (#4418)Gravatar Ciro Spaciari 18-5941/+6655 2023-09-03initialize JSC for macros from cliGravatar Dylan Conway 1-0/+4 2023-09-03fix(syscall): fix handling syscall errno (#4461)Gravatar Ai Hoshino 2-1/+22 2023-09-02workaround a zig bug (#4440)Gravatar dave caruso 1-3/+4 2023-09-01docs: fix http simple example log statement (#4320)Gravatar Karl Böhlmark 1-1/+1 2023-09-01Fix typo (#4445)Gravatar Jorge Jiménez 1-1/+1 2023-09-01keep export star as (#4451)Gravatar Dylan Conway 1-14/+0 2023-09-01bun-vscode 0.0.8Gravatar Colin McDonnell 3-41/+39 2023-09-01Update commandsGravatar Colin McDonnell 3-4/+6 2023-09-01fix `Bun.serve` with tls and `Bun.file` (#4450)Gravatar Dylan Conway 3-14/+40 2023-09-01exclusive maxGravatar Dylan Conway 1-1/+1 2023-09-01Fix debug console from appears on startGravatar Ashcon Partovi 2-2/+5 2023-09-01Add configuration options to extensionGravatar Ashcon Partovi 5-5/+137 2023-09-01Fix run button starting cwd at /Gravatar Ashcon Partovi 1-0/+2 2023-09-01fix(runtime): fix dns_resolver crash (#4435)Gravatar dave caruso 3-17/+19 2023-09-01Fix background colorGravatar Ashcon Partovi 1-2/+3 2023-09-01Allow older versions of VSCodeGravatar Ashcon Partovi 2-6/+5 2023-09-01Fix README for extensionGravatar Ashcon Partovi 2-7/+12 2023-09-01Update VSCode extensionGravatar Ashcon Partovi 1-3/+4 2023-09-01Fix breakpoint on entry for extensionGravatar Ashcon Partovi 5-18/+15 2023-09-01Add Bun.canReload event to inspectorGravatar Ashcon Partovi 2-0/+17 2023-08-31JavaScript Debug Terminal == Bun TerminalGravatar Ashcon Partovi 1-0/+32 2023-08-31fix(runtime): `fs.cp` edge cases (#4439)Gravatar dave caruso 2-8/+44 2023-08-31only set initial debugger breakpoint once (#4441)Gravatar Dylan Conway 1-2/+11 2023-08-31Make breakpoints faster in VSCode extensionGravatar Ashcon Partovi 1-241/+327 2023-08-31`bun install` correctly join dependency URLs (#4421)Gravatar Julian 6-64/+243 2023-08-31get name if not provided in `FormData.append` (#4434)Gravatar Dylan Conway 4-5/+45 2023-08-31Fix vscode debug terminalGravatar Ashcon Partovi 1-21/+0