diff options
author | Darren Tucker <dtucker@zip.com.au> | 2007-03-21 21:39:57 +1100 |
---|---|---|
committer | Darren Tucker <dtucker@zip.com.au> | 2007-03-21 21:39:57 +1100 |
commit | 164aa30e4604672f688b5c51b90e42dfa129821b (patch) | |
tree | 4ce05465abbf23eb557d9f9ef4841a6be23c2365 /openbsd-compat/bsd-getpeereid.c | |
parent | 04354b97dc1cc87d01a33db508a9ea0f0148fb83 (diff) |
- (dtucker) [configure.ac openbsd-compat/bsd-getpeereid.c] Bug #1287: Use
getpeerucred to implement getpeereid (currently only Solaris 10 and up).
Patch by Jan.Pechanec at Sun.
Diffstat (limited to 'openbsd-compat/bsd-getpeereid.c')
-rw-r--r-- | openbsd-compat/bsd-getpeereid.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/openbsd-compat/bsd-getpeereid.c b/openbsd-compat/bsd-getpeereid.c index bdae8b637..5f7e677e5 100644 --- a/openbsd-compat/bsd-getpeereid.c +++ b/openbsd-compat/bsd-getpeereid.c | |||
@@ -37,6 +37,28 @@ getpeereid(int s, uid_t *euid, gid_t *gid) | |||
37 | 37 | ||
38 | return (0); | 38 | return (0); |
39 | } | 39 | } |
40 | #elif defined(HAVE_GETPEERUCRED) | ||
41 | |||
42 | #ifdef HAVE_UCRED_H | ||
43 | # include <ucred.h> | ||
44 | #endif | ||
45 | |||
46 | int | ||
47 | getpeereid(int s, uid_t *euid, gid_t *gid) | ||
48 | { | ||
49 | ucred_t *ucred = NULL; | ||
50 | |||
51 | if (getpeerucred(s, &ucred) == -1) | ||
52 | return (-1); | ||
53 | if ((*euid = ucred_geteuid(ucred)) == -1) | ||
54 | return (-1); | ||
55 | if ((*gid = ucred_getrgid(ucred)) == -1) | ||
56 | return (-1); | ||
57 | |||
58 | ucred_free(ucred); | ||
59 | |||
60 | return (0); | ||
61 | } | ||
40 | #else | 62 | #else |
41 | int | 63 | int |
42 | getpeereid(int s, uid_t *euid, gid_t *gid) | 64 | getpeereid(int s, uid_t *euid, gid_t *gid) |