- struct ucred peercred;
- size_t peercred_len = sizeof(peercred);
-
- if (getsockopt( s, SOL_SOCKET, SO_PEERCRED,
- (void *)&peercred, &peercred_len ) == 0 &&
- peercred_len == sizeof(peercred) ) {
- authid = ch_malloc(sizeof("uidNumber=+gidNumber=+,cn=peercred,cn=external,cn=auth") + 32);
- sprintf(authid, "uidNumber=%d+gidNumber=%d,cn=peercred,cn=external,cn=auth", peercred.uid, peercred.gid);
+ uid_t uid;
+ gid_t gid;
+
+ if( getpeereid( s, &uid, &gid ) == 0 ) {
+ authid = ch_malloc(
+ sizeof("uidNumber=4294967295+gidNumber=4294967295,"
+ "cn=peercred,cn=external,cn=auth"));
+ sprintf(authid, "uidNumber=%d+gidNumber=%d,"
+ "cn=peercred,cn=external,cn=auth",
+ uid, gid);