From c84e20a2968f70474d3d8fc1c3701dd2b99d5ae3 Mon Sep 17 00:00:00 2001 From: Klemens Nanni Date: Sat, 11 Mar 2023 22:23:44 +0400 Subject: [PATCH] Fix SO_PEERCRED usage on OpenBSD getsockopt(2) documents `struct sockpeercred` with `SO_PEERCRED`. (`struct ucred` does exist, but is incompatible to the Linux version.) --- src/nix-daemon/nix-daemon.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/nix-daemon/nix-daemon.cc b/src/nix-daemon/nix-daemon.cc index 7a5cb9a37..87ad4e949 100644 --- a/src/nix-daemon/nix-daemon.cc +++ b/src/nix-daemon/nix-daemon.cc @@ -901,7 +901,11 @@ static PeerInfo getPeerInfo(int remote) #if defined(SO_PEERCRED) +#if defined(__OpenBSD__) + struct sockpeercred cred; +#else ucred cred; +#endif socklen_t credLen = sizeof(cred); if (getsockopt(remote, SOL_SOCKET, SO_PEERCRED, &cred, &credLen) == -1) throw SysError("getting peer credentials");