summaryrefslogtreecommitdiff
path: root/openbsd-compat/bsd-getpeereid.c
diff options
context:
space:
mode:
authorColin Watson <cjwatson@debian.org>2009-12-29 21:40:29 +0000
committerColin Watson <cjwatson@debian.org>2009-12-29 21:40:29 +0000
commita25ec0b132c44c9e341e08464ff830de06b81126 (patch)
treee20842d80f9e25cb6cf09525abea63f7bf655dd7 /openbsd-compat/bsd-getpeereid.c
parent1b816ea846aca3ee89e7995373ace609e9518424 (diff)
parent70847d299887abb96f8703ca99db6d817b78960e (diff)
import openssh-4.7p1-gsskex-20070927.patch
Diffstat (limited to 'openbsd-compat/bsd-getpeereid.c')
-rw-r--r--openbsd-compat/bsd-getpeereid.c22
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
46int
47getpeereid(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
41int 63int
42getpeereid(int s, uid_t *euid, gid_t *gid) 64getpeereid(int s, uid_t *euid, gid_t *gid)