summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>1997-03-24 05:53:12 +0000
committerimp <imp@FreeBSD.org>1997-03-24 05:53:12 +0000
commit3c8c5177a0a5ca7bb746709f0bd6d78c09f72627 (patch)
tree145b01af4ba51bd6b03addacb55a2af085c4a181
parente5d10bdc2e49726df5f9f4de7b68c37c1235a234 (diff)
downloadFreeBSD-src-3c8c5177a0a5ca7bb746709f0bd6d78c09f72627.zip
FreeBSD-src-3c8c5177a0a5ca7bb746709f0bd6d78c09f72627.tar.gz
Fix small race window when creating portal socket.
Obtained from: OpenBSD
-rw-r--r--sbin/mount_portal/mount_portal.c5
-rw-r--r--sbin/mount_portalfs/mount_portalfs.c5
-rw-r--r--usr.sbin/mount_portalfs/mount_portalfs.c5
3 files changed, 12 insertions, 3 deletions
diff --git a/sbin/mount_portal/mount_portal.c b/sbin/mount_portal/mount_portal.c
index cf77264..cd8d72b 100644
--- a/sbin/mount_portal/mount_portal.c
+++ b/sbin/mount_portal/mount_portal.c
@@ -45,7 +45,7 @@ char copyright[] =
static char sccsid[] = "@(#)mount_portal.c 8.6 (Berkeley) 4/26/95";
*/
static const char rcsid[] =
- "$Id: mount_portal.c,v 1.9 1997/02/22 14:32:53 peter Exp $";
+ "$Id: mount_portal.c,v 1.10 1997/03/11 12:34:58 peter Exp $";
#endif /* not lint */
#include <sys/param.h>
@@ -110,6 +110,7 @@ main(argc, argv)
int mntflags = 0;
char tag[32];
struct vfsconf vfc;
+ mode_t um;
qelem q;
int rc;
@@ -159,11 +160,13 @@ main(argc, argv)
if (so < 0) {
err(EX_OSERR, "socket");
}
+ um = umask(077);
(void) unlink(un.sun_path);
if (bind(so, (struct sockaddr *) &un, sizeof(un)) < 0)
err(1, NULL);
(void) unlink(un.sun_path);
+ (void) umask(um);
(void) listen(so, 5);
diff --git a/sbin/mount_portalfs/mount_portalfs.c b/sbin/mount_portalfs/mount_portalfs.c
index cf77264..cd8d72b 100644
--- a/sbin/mount_portalfs/mount_portalfs.c
+++ b/sbin/mount_portalfs/mount_portalfs.c
@@ -45,7 +45,7 @@ char copyright[] =
static char sccsid[] = "@(#)mount_portal.c 8.6 (Berkeley) 4/26/95";
*/
static const char rcsid[] =
- "$Id: mount_portal.c,v 1.9 1997/02/22 14:32:53 peter Exp $";
+ "$Id: mount_portal.c,v 1.10 1997/03/11 12:34:58 peter Exp $";
#endif /* not lint */
#include <sys/param.h>
@@ -110,6 +110,7 @@ main(argc, argv)
int mntflags = 0;
char tag[32];
struct vfsconf vfc;
+ mode_t um;
qelem q;
int rc;
@@ -159,11 +160,13 @@ main(argc, argv)
if (so < 0) {
err(EX_OSERR, "socket");
}
+ um = umask(077);
(void) unlink(un.sun_path);
if (bind(so, (struct sockaddr *) &un, sizeof(un)) < 0)
err(1, NULL);
(void) unlink(un.sun_path);
+ (void) umask(um);
(void) listen(so, 5);
diff --git a/usr.sbin/mount_portalfs/mount_portalfs.c b/usr.sbin/mount_portalfs/mount_portalfs.c
index cf77264..cd8d72b 100644
--- a/usr.sbin/mount_portalfs/mount_portalfs.c
+++ b/usr.sbin/mount_portalfs/mount_portalfs.c
@@ -45,7 +45,7 @@ char copyright[] =
static char sccsid[] = "@(#)mount_portal.c 8.6 (Berkeley) 4/26/95";
*/
static const char rcsid[] =
- "$Id: mount_portal.c,v 1.9 1997/02/22 14:32:53 peter Exp $";
+ "$Id: mount_portal.c,v 1.10 1997/03/11 12:34:58 peter Exp $";
#endif /* not lint */
#include <sys/param.h>
@@ -110,6 +110,7 @@ main(argc, argv)
int mntflags = 0;
char tag[32];
struct vfsconf vfc;
+ mode_t um;
qelem q;
int rc;
@@ -159,11 +160,13 @@ main(argc, argv)
if (so < 0) {
err(EX_OSERR, "socket");
}
+ um = umask(077);
(void) unlink(un.sun_path);
if (bind(so, (struct sockaddr *) &un, sizeof(un)) < 0)
err(1, NULL);
(void) unlink(un.sun_path);
+ (void) umask(um);
(void) listen(so, 5);
OpenPOWER on IntegriCloud