From 64b2cc6f2963e905ed179561725385a7b6f90996 Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Sat, 18 Jun 2022 20:19:11 -0700 Subject: [PATCH] Fix --- .../SecretAgentKit/SocketController.swift | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/Sources/Packages/Sources/SecretAgentKit/SocketController.swift b/Sources/Packages/Sources/SecretAgentKit/SocketController.swift index 3143d99..90e56f8 100644 --- a/Sources/Packages/Sources/SecretAgentKit/SocketController.swift +++ b/Sources/Packages/Sources/SecretAgentKit/SocketController.swift @@ -45,20 +45,14 @@ public class SocketController { var addr = sockaddr_un() addr.sun_family = sa_family_t(AF_UNIX) - var len: Int = 0 + let len = MemoryLayout.size(ofValue: addr.sun_path) - 1 withUnsafeMutablePointer(to: &addr.sun_path.0) { pointer in - path.withCString { cstring in - len = strlen(cstring) - strncpy(pointer, cstring, len) - } - } - addr.sun_len = UInt8(len+2) - - var data: Data! - withUnsafePointer(to: &addr) { pointer in - data = Data(bytes: pointer, count: MemoryLayout.size) + // The buffer is pre-zeroed, so manual termination is unnecessary. + precondition(memccpy(pointer, path, 0, len) != nil) } + addr.sun_len = UInt8(len) + let data = withUnsafeBytes(of: &addr, Data.init(_:)) return SocketPort(protocolFamily: AF_UNIX, socketType: SOCK_STREAM, protocol: 0, address: data)! }