socket.c | socket.c | |||
---|---|---|---|---|
skipping to change at line 113 | skipping to change at line 113 | |||
lfp_cmsg_len (size_t length) | lfp_cmsg_len (size_t length) | |||
{ | { | |||
return CMSG_LEN(length); | return CMSG_LEN(length); | |||
} | } | |||
DSO_PUBLIC void* | DSO_PUBLIC void* | |||
lfp_cmsg_data (struct cmsghdr* cmsg) | lfp_cmsg_data (struct cmsghdr* cmsg) | |||
{ | { | |||
return CMSG_DATA(cmsg); | return CMSG_DATA(cmsg); | |||
} | } | |||
DSO_PUBLIC int | ||||
lfp_getpeereid(int sockfd, uid_t *euid, gid_t *egid) | ||||
{ | ||||
#if defined(HAVE_GETPEEREID) | ||||
return getpeereid(sockfd, euid, egid); | ||||
#elif defined(HAVE_GETPEERUCRED) | ||||
ucred_t stack_ucred; | ||||
ucred_t *ucred = &stack_ucred; | ||||
SYSGUARD(getpeerucred(sockfd, &ucred)); | ||||
*euid = ucred_geteuid(ucred); | ||||
*egid = ucred_getegid(ucred); | ||||
return (*euid < 0 || *egid < 0) ? -1 : 0; | ||||
#elif defined(SO_PEERCRED) | ||||
struct ucred ucred; | ||||
socklen_t len = sizeof(ucred); | ||||
SYSGUARD(getsockopt(sockfd, SOL_SOCKET, SO_PEERCRED, &ucred, &len)); | ||||
*euid = ucred.uid; | ||||
*egid = ucred.gid; | ||||
return 0; | ||||
#endif | ||||
} | ||||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 0 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |