From edb19a321c4e15e660426acb68581578a67c5576 Mon Sep 17 00:00:00 2001 From: "Ned T. Crigler" Date: Mon, 16 Jun 2025 20:06:28 -0700 Subject: Move umask(omask) call after bind Just wrapping the socket system call with umask doesn't work. --- master.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/master.c b/master.c index 376bd54..d5da2c3 100644 --- a/master.c +++ b/master.c @@ -193,16 +193,20 @@ create_socket(char *name) omask = umask(077); s = socket(PF_UNIX, SOCK_STREAM, 0); - umask(omask); /* umask always succeeds, errno is untouched. */ if (s < 0) + { + umask(omask); /* umask always succeeds, errno is untouched. */ return -1; + } sockun.sun_family = AF_UNIX; strcpy(sockun.sun_path, name); if (bind(s, (struct sockaddr*)&sockun, sizeof(sockun)) < 0) { + umask(omask); /* umask always succeeds, errno is untouched. */ close(s); return -1; } + umask(omask); /* umask always succeeds, errno is untouched. */ if (listen(s, 128) < 0) { close(s); @@ -213,7 +217,7 @@ create_socket(char *name) close(s); return -1; } - /* chmod it to prevent any suprises */ + /* chmod it to prevent any surprises */ if (chmod(name, 0600) < 0) { close(s); -- cgit v1.2.3