Merge pull request #11022 from obsidiansystems/fix-openbsd-socket-peercred

Use proper struct sockpeercred for SO_PEERCRED for OpenBSD
This commit is contained in:
John Ericson 2024-07-03 11:56:39 -04:00 committed by GitHub
commit 509be0e77a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -203,7 +203,11 @@ static PeerInfo getPeerInfo(int remote)
#if defined(SO_PEERCRED) #if defined(SO_PEERCRED)
# if defined(__OpenBSD__)
struct sockpeercred cred;
# else
ucred cred; ucred cred;
# endif
socklen_t credLen = sizeof(cred); socklen_t credLen = sizeof(cred);
if (getsockopt(remote, SOL_SOCKET, SO_PEERCRED, &cred, &credLen) == -1) if (getsockopt(remote, SOL_SOCKET, SO_PEERCRED, &cred, &credLen) == -1)
throw SysError("getting peer credentials"); throw SysError("getting peer credentials");
@ -211,9 +215,9 @@ static PeerInfo getPeerInfo(int remote)
#elif defined(LOCAL_PEERCRED) #elif defined(LOCAL_PEERCRED)
#if !defined(SOL_LOCAL) # if !defined(SOL_LOCAL)
#define SOL_LOCAL 0 # define SOL_LOCAL 0
#endif # endif
xucred cred; xucred cred;
socklen_t credLen = sizeof(cred); socklen_t credLen = sizeof(cred);