summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2013-06-17 17:02:56 -0700
committerJeremy Allison <jra@samba.org>2013-06-18 04:31:27 +0200
commit5c4772ec1d562a4547391e1dd4956c43e3d635a7 (patch)
tree5f766eb15706417db5a2e2c608fecefa9932ced7
parentfcc43cfbe34f3e8039c5e1364fc327f3d7b88b12 (diff)
downloadsamba-5c4772ec1d562a4547391e1dd4956c43e3d635a7.tar.gz
samba-5c4772ec1d562a4547391e1dd4956c43e3d635a7.tar.bz2
samba-5c4772ec1d562a4547391e1dd4956c43e3d635a7.zip
Re-add umask(0) code removed by commit 3a7c2777ee0de37d758fe81d67d6836a8354825e
Without the umask code the pipe permissions are affected by the umask of the calling process. As only smbd currently sets its umask to zero (nmbd and winbindd should do the same) this causes the winbindd pipe to be unavailable to the nss library code unless winbindd is run from an init process that explicitly sets umask to zero. When testing from the command line this can be hard to track down :-). Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Ira Cooper <ira@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Tue Jun 18 04:31:27 CEST 2013 on sn-devel-104
-rw-r--r--source3/lib/util_sock.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c
index eb38055d19..54286b3f31 100644
--- a/source3/lib/util_sock.c
+++ b/source3/lib/util_sock.c
@@ -1237,14 +1237,17 @@ int create_pipe_sock(const char *socket_dir,
#ifdef HAVE_UNIXSOCKET
struct sockaddr_un sunaddr;
bool ok;
- int sock;
+ int sock = -1;
+ mode_t old_umask;
char *path = NULL;
+ old_umask = umask(0);
+
ok = directory_create_or_exist_strict(socket_dir,
sec_initial_uid(),
dir_perms);
if (!ok) {
- return -1;
+ goto out_close;
}
/* Create the socket file */
@@ -1273,6 +1276,7 @@ int create_pipe_sock(const char *socket_dir,
SAFE_FREE(path);
+ umask(old_umask);
return sock;
out_close:
@@ -1280,6 +1284,7 @@ out_close:
if (sock != -1)
close(sock);
+ umask(old_umask);
return -1;
#else