Commit daf7d0c0 authored by Luke Howard's avatar Luke Howard
Browse files

Support SO_PEERCRED SASL EXTERNAL authorization.

parent a6edb2ae
......@@ -1555,6 +1555,19 @@ slapd_daemon_task(
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 */
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment