From daf7d0c0ebc1bbb5b46b60e9969e296ed1c864da Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Wed, 4 Dec 2002 04:14:44 +0000 Subject: [PATCH] Support SO_PEERCRED SASL EXTERNAL authorization. --- servers/slapd/daemon.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index 6d1ca980bb..ab93192350 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -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 */ -- 2.39.5