Merge branch 'obsd-master' into master

This commit is contained in:
Thomas Adam
2021-07-06 10:01:22 +01:00
4 changed files with 29 additions and 6 deletions

15
tmux.c
View File

@ -207,16 +207,22 @@ make_label(const char *label, char **cause)
free(paths);
xasprintf(&base, "%s/tmux-%ld", path, (long)uid);
if (mkdir(base, S_IRWXU) != 0 && errno != EEXIST)
if (mkdir(base, S_IRWXU) != 0 && errno != EEXIST) {
xasprintf(cause, "couldn't create directory %s (%s)", base,
strerror(errno));
goto fail;
if (lstat(base, &sb) != 0)
}
if (lstat(base, &sb) != 0) {
xasprintf(cause, "couldn't read directory %s (%s)", base,
strerror(errno));
goto fail;
}
if (!S_ISDIR(sb.st_mode)) {
errno = ENOTDIR;
xasprintf(cause, "%s is not a directory", base);
goto fail;
}
if (sb.st_uid != uid || (sb.st_mode & S_IRWXO) != 0) {
errno = EACCES;
xasprintf(cause, "directory %s has unsafe permissions", base);
goto fail;
}
xasprintf(&path, "%s/%s", base, label);
@ -224,7 +230,6 @@ make_label(const char *label, char **cause)
return (path);
fail:
xasprintf(cause, "error creating %s (%s)", base, strerror(errno));
free(base);
return (NULL);
}