diff --git a/Package.swift b/Package.swift index a9e4563..9120790 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.10 +// swift-tools-version: 6.0 import PackageDescription diff --git a/Sources/AsyncDNSResolver/c-ares/DNSResolver_c-ares.swift b/Sources/AsyncDNSResolver/c-ares/DNSResolver_c-ares.swift index bf5779b..12fbca5 100644 --- a/Sources/AsyncDNSResolver/c-ares/DNSResolver_c-ares.swift +++ b/Sources/AsyncDNSResolver/c-ares/DNSResolver_c-ares.swift @@ -638,18 +638,16 @@ private func toStringArray(_ arrayPointer: UnsafeMutablePointer String? { + var addressBytes: [Int8] = Array(repeating: 0, count: length) + return addressBytes.withUnsafeMutableBufferPointer { addressBytesPtr -> String? in + // The returned pointer is the same as addressBytesPtr.baseAddress but nil on error. + if inet_ntop(family, bytes, addressBytesPtr.baseAddress, socklen_t(length)) == nil { + return nil + } + + return addressBytesPtr.baseAddress!.withMemoryRebound( + to: UInt8.self, + capacity: addressBytesPtr.count + ) { + String(cString: $0) + } + } +} diff --git a/Sources/AsyncDNSResolver/dnssd/DNSResolver_dnssd.swift b/Sources/AsyncDNSResolver/dnssd/DNSResolver_dnssd.swift index 7f61adc..0c06d52 100644 --- a/Sources/AsyncDNSResolver/dnssd/DNSResolver_dnssd.swift +++ b/Sources/AsyncDNSResolver/dnssd/DNSResolver_dnssd.swift @@ -249,9 +249,7 @@ extension DNSSD { throw AsyncDNSResolver.Error(code: .badResponse) } - var parsedAddressBytes = [CChar](repeating: 0, count: Int(INET_ADDRSTRLEN)) - inet_ntop(AF_INET, ptr, &parsedAddressBytes, socklen_t(INET_ADDRSTRLEN)) - let parsedAddress = String(cString: parsedAddressBytes) + let parsedAddress = sys_inet_ntop(family: AF_INET, bytes: ptr, length: Int(INET_ADDRSTRLEN)) ?? "" return ARecord(address: .init(address: parsedAddress), ttl: nil) } @@ -272,9 +270,7 @@ extension DNSSD { throw AsyncDNSResolver.Error(code: .badResponse) } - var parsedAddressBytes = [CChar](repeating: 0, count: Int(INET6_ADDRSTRLEN)) - inet_ntop(AF_INET6, ptr, &parsedAddressBytes, socklen_t(INET6_ADDRSTRLEN)) - let parsedAddress = String(cString: parsedAddressBytes) + let parsedAddress = sys_inet_ntop(family: AF_INET6, bytes: ptr, length: Int(INET6_ADDRSTRLEN)) ?? "" return AAAARecord(address: .init(address: parsedAddress), ttl: nil) }