Commit a4812cdf240fac5d0461288094cc94e03e030272

Casper Dik 2013-03-15T01:13:58

Fix getpeereid() compilation on Solaris The code in getpeereid() is unlikely to compile as ucred_t is an opaque struct (ucred_t * works but ucred_t does not). Either you need to give a pointer initialized to NULL and getpeerucred() allocates a new ucred or you call it with an allocated ucred as in this patch. Signed-off-by: Guillem Jover <guillem@hadrons.org>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/src/getpeereid.c b/src/getpeereid.c
index 3694219..193f366 100644
--- a/src/getpeereid.c
+++ b/src/getpeereid.c
@@ -99,11 +99,13 @@ getpeereid(int s, uid_t *euid, gid_t *egid)
 }
 #elif defined(__sun)
 /* Solaris */
+#include <alloca.h>
+#include <ucred.h>
+
 int
 getpeereid(int s, uid_t *euid, gid_t *egid)
 {
-	ucred_t cred_inst;
-	ucred_t *cred = &cred_inst;
+	ucred_t *cred = alloca(ucred_size());
 	int ret;
 
 	ret = getpeerucred(s, &cred);