From 07a6443a80d57c2aaa958bafba091bf4f9e88ca8 Mon Sep 17 00:00:00 2001 From: David Hewitt Date: Tue, 12 Sep 2023 13:05:00 +0100 Subject: fix(node/path): Prevent memory corruption in parse (#5083) * Add failing test for issue #4954 * fix(node/path): Return results with toValueGC --- src/bun.js/node/types.zig | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/bun.js/node/types.zig b/src/bun.js/node/types.zig index 51af22052..35daea52c 100644 --- a/src/bun.js/node/types.zig +++ b/src/bun.js/node/types.zig @@ -2198,22 +2198,14 @@ pub const Path = struct { base.setOutputEncoding(); name_.setOutputEncoding(); ext.setOutputEncoding(); - var entries = [10]JSC.ZigString{ - JSC.ZigString.init("dir"), - JSC.ZigString.init("root"), - JSC.ZigString.init("base"), - JSC.ZigString.init("name"), - JSC.ZigString.init("ext"), - dir, - root, - base, - name_, - ext, - }; - var keys: []JSC.ZigString = entries[0..5]; - var values: []JSC.ZigString = entries[5..10]; - return JSC.JSValue.fromEntries(globalThis, keys.ptr, values.ptr, 5, true); + var result = JSC.JSValue.createEmptyObject(globalThis, 5); + result.put(globalThis, JSC.ZigString.static("dir"), dir.toValueGC(globalThis)); + result.put(globalThis, JSC.ZigString.static("root"), root.toValueGC(globalThis)); + result.put(globalThis, JSC.ZigString.static("base"), base.toValueGC(globalThis)); + result.put(globalThis, JSC.ZigString.static("name"), name_.toValueGC(globalThis)); + result.put(globalThis, JSC.ZigString.static("ext"), ext.toValueGC(globalThis)); + return result; } pub fn relative(globalThis: *JSC.JSGlobalObject, isWindows: bool, args_ptr: [*]JSC.JSValue, args_len: u16) callconv(.C) JSC.JSValue { if (comptime is_bindgen) return JSC.JSValue.jsUndefined(); -- cgit v1.2.3