diff options
author | 2023-09-14 08:43:10 +0800 | |
---|---|---|
committer | 2023-09-13 17:43:10 -0700 | |
commit | 03d9bcd440bd74cf21f4ac9ec1919ad074077231 (patch) | |
tree | 7cb23768d72afced9158d8e1a501609672db7b82 /src | |
parent | 972a6f29cc0d232982ad9d2cae493c8a5cc7a74a (diff) | |
download | bun-03d9bcd440bd74cf21f4ac9ec1919ad074077231.tar.gz bun-03d9bcd440bd74cf21f4ac9ec1919ad074077231.tar.zst bun-03d9bcd440bd74cf21f4ac9ec1919ad074077231.zip |
fix(node:dns): fix the crash. (#5200)
Diffstat (limited to 'src')
-rw-r--r-- | src/bun.js/api/bun/dns_resolver.zig | 10 | ||||
-rw-r--r-- | src/deps/c_ares.zig | 9 |
2 files changed, 5 insertions, 14 deletions
diff --git a/src/bun.js/api/bun/dns_resolver.zig b/src/bun.js/api/bun/dns_resolver.zig index 8232318a2..b2d209c95 100644 --- a/src/bun.js/api/bun/dns_resolver.zig +++ b/src/bun.js/api/bun/dns_resolver.zig @@ -1977,11 +1977,6 @@ pub const DNSResolver = struct { return .zero; }; - if (name_str.length() == 0) { - globalThis.throwInvalidArgumentType("resolveSoa", "hostname", "non-empty string"); - return .zero; - } - const name = name_str.toSliceClone(globalThis, bun.default_allocator); var vm = globalThis.bunVM(); @@ -2039,11 +2034,6 @@ pub const DNSResolver = struct { return .zero; }; - if (name_str.length() == 0) { - globalThis.throwInvalidArgumentType("resolveNs", "hostname", "non-empty string"); - return .zero; - } - const name = name_str.toSliceClone(globalThis, bun.default_allocator); var vm = globalThis.bunVM(); diff --git a/src/deps/c_ares.zig b/src/deps/c_ares.zig index 457fcef0e..62880c3ed 100644 --- a/src/deps/c_ares.zig +++ b/src/deps/c_ares.zig @@ -524,11 +524,12 @@ pub const Channel = opaque { } pub fn resolve(this: *Channel, name: []const u8, comptime lookup_name: []const u8, comptime Type: type, ctx: *Type, comptime cares_type: type, comptime callback: cares_type.Callback(Type)) void { + if (name.len >= 1023 or (name.len == 0 and !(bun.strings.eqlComptime(lookup_name, "ns") or bun.strings.eqlComptime(lookup_name, "soa")))) { + return cares_type.callbackWrapper(lookup_name, Type, callback).?(ctx, ARES_EBADNAME, 0, null, 0); + } + var name_buf: [1024]u8 = undefined; - const name_ptr: ?[*:0]const u8 = brk: { - if (name.len == 0 or name.len >= 1023) { - break :brk null; - } + const name_ptr: [*:0]const u8 = brk: { const len = @min(name.len, name_buf.len - 1); @memcpy(name_buf[0..len], name[0..len]); |