diff options
author | 2023-01-07 21:05:02 -0800 | |
---|---|---|
committer | 2023-01-07 21:05:34 -0800 | |
commit | 1e841a7881e513d60add3653e487646c840f8e11 (patch) | |
tree | 973cf476fe442b81f152b8f6d33a25366183292e | |
parent | b0d1cc1df7389aaaf54dde756077a263a837f344 (diff) | |
download | bun-1e841a7881e513d60add3653e487646c840f8e11.tar.gz bun-1e841a7881e513d60add3653e487646c840f8e11.tar.zst bun-1e841a7881e513d60add3653e487646c840f8e11.zip |
Fix segfault on Linux when getaddrinfo returns an error\nSee https://github.com/ziglang/zig/pull/14242
-rw-r--r-- | src/bun.js/api/bun/dns_resolver.zig | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/bun.js/api/bun/dns_resolver.zig b/src/bun.js/api/bun/dns_resolver.zig index d6eced813..f376151ad 100644 --- a/src/bun.js/api/bun/dns_resolver.zig +++ b/src/bun.js/api/bun/dns_resolver.zig @@ -739,7 +739,6 @@ pub const GetAddrInfoRequest = struct { if (hints) |*hint| hint else null, &addrinfo, ); - defer std.c.freeaddrinfo(addrinfo); JSC.Node.Syscall.syslog("getaddrinfo({s}, {d}) = {d} ({any})", .{ query.name, port, @@ -750,6 +749,10 @@ pub const GetAddrInfoRequest = struct { this.* = .{ .err = @enumToInt(err) }; return; } + + // do not free addrinfo when err != 0 + // https://github.com/ziglang/zig/pull/14242 + defer std.c.freeaddrinfo(addrinfo); this.* = .{ .success = GetAddrInfo.Result.toList(default_allocator, addrinfo) catch unreachable }; } |