fixes #23956; bindUnix loses the last character on OpenBSD (#23961)

uses calculation as shown in
https://man7.org/linux/man-pages/man7/unix.7.html
> offsetof(struct sockaddr_un, sun_path) + strlen(sun_path) + 1
This commit is contained in:
Alfred Morgan
2024-08-22 01:31:35 -07:00
committed by GitHub
parent 79f5a74408
commit cb7bcae7f7
2 changed files with 4 additions and 4 deletions

View File

@@ -687,7 +687,7 @@ when defined(posix) and not useNimNetLite:
var socketAddr = makeUnixAddr(path)
let ret = socket.fd.connect(cast[ptr SockAddr](addr socketAddr),
(sizeof(socketAddr.sun_family) + path.len).SockLen)
(offsetOf(socketAddr, sun_path) + path.len + 1).SockLen)
if ret == 0:
# Request to connect completed immediately.
retFuture.complete()
@@ -705,7 +705,7 @@ when defined(posix) and not useNimNetLite:
when not defined(nimdoc):
var socketAddr = makeUnixAddr(path)
if socket.fd.bindAddr(cast[ptr SockAddr](addr socketAddr),
(sizeof(socketAddr.sun_family) + path.len).SockLen) != 0'i32:
(offsetOf(socketAddr, sun_path) + path.len + 1).SockLen) != 0'i32:
raiseOSError(osLastError())
elif defined(nimdoc):

View File

@@ -1321,7 +1321,7 @@ when defined(nimdoc) or (defined(posix) and not useNimNetLite):
when not defined(nimdoc):
var socketAddr = makeUnixAddr(path)
if socket.fd.connect(cast[ptr SockAddr](addr socketAddr),
(sizeof(socketAddr.sun_family) + path.len).SockLen) != 0'i32:
(offsetOf(socketAddr, sun_path) + path.len + 1).SockLen) != 0'i32:
raiseOSError(osLastError())
proc bindUnix*(socket: Socket, path: string) =
@@ -1330,7 +1330,7 @@ when defined(nimdoc) or (defined(posix) and not useNimNetLite):
when not defined(nimdoc):
var socketAddr = makeUnixAddr(path)
if socket.fd.bindAddr(cast[ptr SockAddr](addr socketAddr),
(sizeof(socketAddr.sun_family) + path.len).SockLen) != 0'i32:
(offsetOf(socketAddr, sun_path) + path.len + 1).SockLen) != 0'i32:
raiseOSError(osLastError())
when defineSsl: