mirror of https://github.com/ericonr/sndio.git
save & restore umask when creating socket dir
This commit is contained in:
parent
c8a50a21ea
commit
276b44ece4
|
@ -257,7 +257,7 @@ getbasepath(char *base, size_t size)
|
||||||
{
|
{
|
||||||
uid_t uid;
|
uid_t uid;
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
mode_t mask;
|
mode_t mask, omask;
|
||||||
|
|
||||||
uid = geteuid();
|
uid = geteuid();
|
||||||
if (uid == 0) {
|
if (uid == 0) {
|
||||||
|
@ -267,10 +267,12 @@ getbasepath(char *base, size_t size)
|
||||||
mask = 077;
|
mask = 077;
|
||||||
snprintf(base, SOCKPATH_MAX, SOCKPATH_DIR "-%u", uid);
|
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)
|
if (errno != EEXIST)
|
||||||
err(1, "mkdir(\"%s\")", base);
|
err(1, "mkdir(\"%s\")", base);
|
||||||
}
|
}
|
||||||
|
umask(omask);
|
||||||
if (stat(base, &sb) < 0)
|
if (stat(base, &sb) < 0)
|
||||||
err(1, "stat(\"%s\")", base);
|
err(1, "stat(\"%s\")", base);
|
||||||
if (sb.st_uid != uid || (sb.st_mode & mask) != 0)
|
if (sb.st_uid != uid || (sb.st_mode & mask) != 0)
|
||||||
|
|
Loading…
Reference in New Issue