=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/sndiod/sndiod.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- src/usr.bin/sndiod/sndiod.c 2015/11/22 16:52:06 1.13 +++ src/usr.bin/sndiod/sndiod.c 2015/11/23 12:01:04 1.14 @@ -1,4 +1,4 @@ -/* $OpenBSD: sndiod.c,v 1.13 2015/11/22 16:52:06 ratchov Exp $ */ +/* $OpenBSD: sndiod.c,v 1.14 2015/11/23 12:01:04 ratchov Exp $ */ /* * Copyright (c) 2008-2012 Alexandre Ratchov * @@ -255,7 +255,7 @@ { uid_t uid; struct stat sb; - mode_t mask; + mode_t mask, omask; uid = geteuid(); if (uid == 0) { @@ -265,10 +265,12 @@ mask = 077; snprintf(base, SOCKPATH_MAX, SOCKPATH_DIR "-%u", uid); } - if (mkdir(base, 0777 & ~mask) < 0) { + omask = umask(mask); + if (mkdir(base, 0777) < 0) { if (errno != EEXIST) err(1, "mkdir(\"%s\")", base); } + umask(omask); if (stat(base, &sb) < 0) err(1, "stat(\"%s\")", base); if (sb.st_uid != uid || (sb.st_mode & mask) != 0)