summaryrefslogtreecommitdiff
path: root/usr.bin/ssh
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2001-06-22 23:35:22 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2001-06-22 23:35:22 +0000
commitcd7f2dc11407d4e8345a411f4125d1c17a156ce2 (patch)
tree559cb67579b5328bc20c084969d7dd5bd3c85756 /usr.bin/ssh
parenta8d24e214fbde168f363ceebea21096572b3fc81 (diff)
don't overwrite argv (fixes ssh user@host in 'ps'), report by ericj@
Diffstat (limited to 'usr.bin/ssh')
-rw-r--r--usr.bin/ssh/ssh.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/usr.bin/ssh/ssh.c b/usr.bin/ssh/ssh.c
index 9a5c6d1761a..584a7c3735e 100644
--- a/usr.bin/ssh/ssh.c
+++ b/usr.bin/ssh/ssh.c
@@ -39,7 +39,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: ssh.c,v 1.124 2001/06/07 20:23:05 markus Exp $");
+RCSID("$OpenBSD: ssh.c,v 1.125 2001/06/22 23:35:21 markus Exp $");
#include <openssl/evp.h>
#include <openssl/err.h>
@@ -236,7 +236,7 @@ main(int ac, char **av)
{
int i, opt, optind, exit_status, ok;
u_short fwd_port, fwd_host_port;
- char *optarg, *cp, buf[256];
+ char *optarg, *p, *cp, buf[256];
struct stat st;
struct passwd *pw;
int dummy;
@@ -292,10 +292,12 @@ main(int ac, char **av)
if (av[optind][0] != '-') {
if (host)
break;
- if ((cp = strchr(av[optind], '@'))) {
- if(cp == av[optind])
+ if (strchr(av[optind], '@')) {
+ p = xstrdup(av[optind]);
+ cp = strchr(p, '@');
+ if(cp == NULL || cp == p)
usage();
- options.user = av[optind];
+ options.user = p;
*cp = '\0';
host = ++cp;
} else