From 42fd58e580a99e15d5c647f13fe316af1ce8e1fa Mon Sep 17 00:00:00 2001 From: Igor Pashev Date: Sat, 28 Jan 2012 20:03:09 +0300 Subject: Fixed getpeereid() : struct ucred_t is not public --- src/getpeereid.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/getpeereid.c b/src/getpeereid.c index 8990357..30acf45 100644 --- a/src/getpeereid.c +++ b/src/getpeereid.c @@ -99,11 +99,11 @@ getpeereid(int s, uid_t *euid, gid_t *egid) } #elif defined(__sun) /* Solaris */ +#include int getpeereid(int s, uid_t *euid, gid_t *egid) { - ucred_t cred_inst; - ucred_t *cred = &cred_inst; + ucred_t *cred; int ret; ret = getpeerucred(s, &cred); @@ -111,11 +111,16 @@ getpeereid(int s, uid_t *euid, gid_t *egid) return ret; *euid = ucred_geteuid(cred); - if (*euid < 0) + if (*euid < 0) { + ucred_free(cred); return -1; - *egid = ucred_getegid(cred); - if (*egid < 0) + } + + *egid = ucred_getegid(cred); + if (*egid < 0) { + ucred_free(cred); return -1; + } return 0; } -- cgit v1.2.3