mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
create IPC sockets with wide-open permissions (0222 might suffice; ITS#4709)
This commit is contained in:
parent
f449ee6500
commit
59e60483fa
@ -1310,24 +1310,39 @@ slap_open_listener(
|
||||
#ifdef LOCAL_CREDS
|
||||
{
|
||||
int one = 1;
|
||||
setsockopt(l.sl_sd, 0, LOCAL_CREDS, &one, sizeof one);
|
||||
setsockopt( l.sl_sd, 0, LOCAL_CREDS, &one, sizeof( one ) );
|
||||
}
|
||||
#endif /* LOCAL_CREDS */
|
||||
addrlen = sizeof(struct sockaddr_un);
|
||||
|
||||
addrlen = sizeof( struct sockaddr_un );
|
||||
|
||||
/* create socket with all permissions set for those systems
|
||||
* that honor permissions on sockets (e.g. Linux); typically,
|
||||
* only write is required. To exploit filesystem permissions,
|
||||
* place the socket in a directory and use directory's
|
||||
* permissions. Need write perms to the directory to
|
||||
* create/unlink the socket; likely need exec perms to access
|
||||
* the socket */
|
||||
{
|
||||
mode_t old_umask;
|
||||
|
||||
old_umask = umask( 0 );
|
||||
rc = bind( l.sl_sd, *sal, addrlen );
|
||||
umask( old_umask );
|
||||
if ( rc ) {
|
||||
err = sock_errno();
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"daemon: bind(%ld) failed errno=%d (%s)\n",
|
||||
(long)l.sl_sd, err, sock_errstr( err ) );
|
||||
tcp_close( l.sl_sd );
|
||||
sal++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif /* LDAP_PF_LOCAL */
|
||||
}
|
||||
|
||||
if (bind(l.sl_sd, *sal, addrlen)) {
|
||||
err = sock_errno();
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"daemon: bind(%ld) failed errno=%d (%s)\n",
|
||||
(long) l.sl_sd, err, sock_errstr(err) );
|
||||
tcp_close( l.sl_sd );
|
||||
sal++;
|
||||
continue;
|
||||
}
|
||||
|
||||
switch ( (*sal)->sa_family ) {
|
||||
#ifdef LDAP_PF_LOCAL
|
||||
case AF_LOCAL: {
|
||||
|
Loading…
Reference in New Issue
Block a user