X-Git-Url: http://andersk.mit.edu/gitweb/openssh.git/blobdiff_plain/9cd11896db0cd2cd2bb1555a062f1421071105b6..bff0be25fecba6952bee41ab5120acc7dcb069d6:/openbsd-compat/bsd-getpeereid.c diff --git a/openbsd-compat/bsd-getpeereid.c b/openbsd-compat/bsd-getpeereid.c index 8a3779f3..5f7e677e 100644 --- a/openbsd-compat/bsd-getpeereid.c +++ b/openbsd-compat/bsd-getpeereid.c @@ -16,10 +16,13 @@ #include "includes.h" -RCSID("$Id$"); - #if !defined(HAVE_GETPEEREID) +#include +#include + +#include + #if defined(SO_PEERCRED) int getpeereid(int s, uid_t *euid, gid_t *gid) @@ -34,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)