From 164aa30e4604672f688b5c51b90e42dfa129821b Mon Sep 17 00:00:00 2001 From: Darren Tucker Date: Wed, 21 Mar 2007 21:39:57 +1100 Subject: - (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. --- openbsd-compat/bsd-getpeereid.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'openbsd-compat/bsd-getpeereid.c') 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) return (0); } +#elif defined(HAVE_GETPEERUCRED) + +#ifdef HAVE_UCRED_H +# include +#endif + +int +getpeereid(int s, uid_t *euid, gid_t *gid) +{ + ucred_t *ucred = NULL; + + if (getpeerucred(s, &ucred) == -1) + return (-1); + if ((*euid = ucred_geteuid(ucred)) == -1) + return (-1); + if ((*gid = ucred_getrgid(ucred)) == -1) + return (-1); + + ucred_free(ucred); + + return (0); +} #else int getpeereid(int s, uid_t *euid, gid_t *gid) -- cgit v1.2.3