diff options
author | des <des@FreeBSD.org> | 2009-10-01 17:12:52 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2009-10-01 17:12:52 +0000 |
commit | c6a1085feffa5fcd9040272aeae30e7f2466f754 (patch) | |
tree | 927d2417c80c4c448ee45c25269ecab7af8f482e /crypto/openssh/ssh.c | |
parent | 4f56708582006aca1db129a86ef646499265ee9a (diff) | |
parent | 98b8242e22b0fc941b830dcec63d235b01bd46a2 (diff) | |
download | FreeBSD-src-c6a1085feffa5fcd9040272aeae30e7f2466f754.zip FreeBSD-src-c6a1085feffa5fcd9040272aeae30e7f2466f754.tar.gz |
Upgrade to OpenSSH 5.3p1.
Diffstat (limited to 'crypto/openssh/ssh.c')
-rw-r--r-- | crypto/openssh/ssh.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/crypto/openssh/ssh.c b/crypto/openssh/ssh.c index cd3449a..25dd863 100644 --- a/crypto/openssh/ssh.c +++ b/crypto/openssh/ssh.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh.c,v 1.324 2009/02/12 03:00:56 djm Exp $ */ +/* $OpenBSD: ssh.c,v 1.326 2009/07/02 02:11:47 dtucker Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -49,6 +49,7 @@ __RCSID("$FreeBSD$"); #endif #include <sys/resource.h> #include <sys/ioctl.h> +#include <sys/param.h> #include <sys/socket.h> #include <ctype.h> @@ -204,8 +205,8 @@ void muxserver_listen(void); int main(int ac, char **av) { - int i, opt, exit_status, use_syslog; - char *p, *cp, *line, buf[256]; + int i, r, opt, exit_status, use_syslog; + char *p, *cp, *line, *argv0, buf[MAXPATHLEN]; struct stat st; struct passwd *pw; int dummy, timeout_ms; @@ -271,6 +272,7 @@ main(int ac, char **av) /* Parse command-line arguments. */ host = NULL; use_syslog = 0; + argv0 = av[0]; again: while ((opt = getopt(ac, av, "1246ab:c:e:fgi:kl:m:no:p:qstvx" @@ -601,7 +603,7 @@ main(int ac, char **av) * Initialize "log" output. Since we are the client all output * actually goes to stderr. */ - log_init(av[0], + log_init(argv0, options.log_level == -1 ? SYSLOG_LEVEL_INFO : options.log_level, SYSLOG_FACILITY_USER, !use_syslog); @@ -614,9 +616,10 @@ main(int ac, char **av) fatal("Can't open user config file %.100s: " "%.100s", config, strerror(errno)); } else { - snprintf(buf, sizeof buf, "%.100s/%.100s", pw->pw_dir, + r = snprintf(buf, sizeof buf, "%s/%s", pw->pw_dir, _PATH_SSH_USER_CONFFILE); - (void)read_config_file(buf, host, &options, 1); + if (r > 0 && (size_t)r < sizeof(buf)) + (void)read_config_file(buf, host, &options, 1); /* Read systemwide configuration file after use config. */ (void)read_config_file(_PATH_HOST_CONFIG_FILE, host, @@ -629,7 +632,7 @@ main(int ac, char **av) channel_set_af(options.address_family); /* reinit */ - log_init(av[0], options.log_level, SYSLOG_FACILITY_USER, !use_syslog); + log_init(argv0, options.log_level, SYSLOG_FACILITY_USER, !use_syslog); seed_rng(); @@ -784,9 +787,9 @@ main(int ac, char **av) * Now that we are back to our own permissions, create ~/.ssh * directory if it doesn't already exist. */ - snprintf(buf, sizeof buf, "%.100s%s%.100s", pw->pw_dir, + r = snprintf(buf, sizeof buf, "%s%s%s", pw->pw_dir, strcmp(pw->pw_dir, "/") ? "/" : "", _PATH_SSH_USER_DIR); - if (stat(buf, &st) < 0) + if (r > 0 && (size_t)r < sizeof(buf) && stat(buf, &st) < 0) if (mkdir(buf, 0700) < 0) error("Could not create directory '%.200s'.", buf); |