mirror of
https://github.com/tmux/tmux.git
synced 2024-12-12 17:38:48 +00:00
Improve error reporting when the tmux /tmp directory cannot be created
or used, GitHub issue 2765 from Uwe Kleine-Koenig.
This commit is contained in:
parent
35c2958ae4
commit
32f2d9d089
15
tmux.c
15
tmux.c
@ -211,16 +211,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);
|
||||
@ -228,7 +234,6 @@ make_label(const char *label, char **cause)
|
||||
return (path);
|
||||
|
||||
fail:
|
||||
xasprintf(cause, "error creating %s (%s)", base, strerror(errno));
|
||||
free(base);
|
||||
return (NULL);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user