mirror of
https://github.com/tmate-io/tmate.git
synced 2024-11-23 08:33:17 +01:00
Don't treat TMUX_TMPDIR as a potential file
The point of setting TMUX_TMPDIR is to then make any labels from -L go to that directory. In the case of makesocketpath() with no TMUX_TMPDIR set, would set both the path and the default socket to a file. The checking of the permissions on the file worked fine in that case, but when TMUX_TMPDIR is set, won't work on a directory. This fixes the problem by ensuring the check on the permissions is performed on directories only.
This commit is contained in:
parent
75ec17f0b5
commit
bda970b3b1
6
tmux.c
6
tmux.c
@ -184,7 +184,8 @@ makesocketpath(const char *label)
|
|||||||
errno = ENOTDIR;
|
errno = ENOTDIR;
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
if (sb.st_uid != uid || (sb.st_mode & (S_IRWXG|S_IRWXO)) != 0) {
|
if (sb.st_uid != uid || (!S_ISDIR(sb.st_mode) &&
|
||||||
|
sb.st_mode & (S_IRWXG|S_IRWXO)) != 0) {
|
||||||
errno = EACCES;
|
errno = EACCES;
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
@ -387,7 +388,8 @@ main(int argc, char **argv)
|
|||||||
/* -L or default set. */
|
/* -L or default set. */
|
||||||
if (label != NULL) {
|
if (label != NULL) {
|
||||||
if ((path = makesocketpath(label)) == NULL) {
|
if ((path = makesocketpath(label)) == NULL) {
|
||||||
fprintf(stderr, "can't create socket\n");
|
fprintf(stderr, "can't create socket: %s\n",
|
||||||
|
strerror(errno));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user