Call realpath earlier on the socket directory path rather than on the

socket file path because the latter may not exist yet and in that case
realpath is allowed to fail. From Romain Francoise.
This commit is contained in:
Nicholas Marriott 2012-11-26 11:35:28 +00:00
parent 260419f48e
commit d762ced298
1 changed files with 6 additions and 4 deletions

10
tmux.c
View File

@ -159,7 +159,7 @@ parseenvironment(void)
char *
makesocketpath(const char *label)
{
char base[MAXPATHLEN], *path, *s;
char base[MAXPATHLEN], realbase[MAXPATHLEN], *path, *s;
struct stat sb;
u_int uid;
@ -183,7 +183,10 @@ makesocketpath(const char *label)
return (NULL);
}
xasprintf(&path, "%s/%s", base, label);
if (realpath(base, realbase) == NULL)
strlcpy(realbase, base, sizeof realbase);
xasprintf(&path, "%s/%s", realbase, label);
return (path);
}
@ -384,8 +387,7 @@ main(int argc, char **argv)
}
}
free(label);
if (realpath(path, socket_path) == NULL)
strlcpy(socket_path, path, sizeof socket_path);
strlcpy(socket_path, path, sizeof socket_path);
free(path);
/* Set process title. */