case AF_LOCAL:
sprintf( peername, "PATH=%s", from.sa_un_addr.sun_path );
ssf = LDAP_PVT_SASL_LOCAL_SSF;
+# ifdef SO_PEERCRED
+ {
+ 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);
+ }
+ }
+# endif /* SO_PEERCRED */
dnsname = "local";
break;
#endif /* LDAP_PF_LOCAL */