aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred SUmner <jarred@jarredsumner.com> 2023-01-07 21:05:02 -0800
committerGravatar Jarred SUmner <jarred@jarredsumner.com> 2023-01-07 21:05:34 -0800
commit1e841a7881e513d60add3653e487646c840f8e11 (patch)
tree973cf476fe442b81f152b8f6d33a25366183292e
parentb0d1cc1df7389aaaf54dde756077a263a837f344 (diff)
downloadbun-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.zig5
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 };
}