summaryrefslogtreecommitdiffstats
path: root/tmux.c
diff options
context:
space:
mode:
authorThomas <thomas@xteddy.org>2014-01-20 10:48:12 +0000
committerThomas <thomas@xteddy.org>2014-01-20 10:48:12 +0000
commitd02c4bda3a4b456f654fb0c1b454ba9724bff0f3 (patch)
tree95f3d17d7f1525e05ed298a015166af557988a0e /tmux.c
parentba014c1a605f78b301b47ef922dd24a3c5c2c4c1 (diff)
parent938768ed3de3e38cb96344b8ec7b794b5e828acf (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'tmux.c')
-rw-r--r--tmux.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/tmux.c b/tmux.c
index 1e6edd90..f5be1de4 100644
--- a/tmux.c
+++ b/tmux.c
@@ -205,8 +205,9 @@ int
main(int argc, char **argv)
{
struct passwd *pw;
- char *s, *path, *label, *home, **var, tmp[MAXPATHLEN];
+ char *s, *path, *label, **var, tmp[MAXPATHLEN];
char in[256];
+ const char *home;
long long pid;
int opt, flags, quiet, keys, session;
@@ -331,11 +332,15 @@ main(int argc, char **argv)
pw = getpwuid(getuid());
if (pw != NULL)
home = pw->pw_dir;
+ else
+ home = NULL;
}
- xasprintf(&cfg_file, "%s/.tmux.conf", home);
- if (access(cfg_file, R_OK) != 0 && errno == ENOENT) {
- free(cfg_file);
- cfg_file = NULL;
+ if (home != NULL) {
+ xasprintf(&cfg_file, "%s/.tmux.conf", home);
+ if (access(cfg_file, R_OK) != 0 && errno == ENOENT) {
+ free(cfg_file);
+ cfg_file = NULL;
+ }
}
}
@@ -367,7 +372,11 @@ main(int argc, char **argv)
}
}
free(label);
- strlcpy(socket_path, path, sizeof socket_path);
+
+ if (strlcpy(socket_path, path, sizeof socket_path) >= sizeof socket_path) {
+ fprintf(stderr, "socket path too long: %s\n", path);
+ exit(1);
+ }
free(path);
#ifdef HAVE_SETPROCTITLE