summaryrefslogtreecommitdiffstats
path: root/scp.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2005-04-03 10:16:11 +1000
committerDamien Miller <djm@mindrot.org>2005-04-03 10:16:11 +1000
commit3dae15c6111a90a4a7417a34fa47a1cfee16963e (patch)
tree7df77118a695fb7f287c0f43f0eb9f87e1290688 /scp.c
parentde0de39082ee971aa3ff442e0201d9eff5c75cca (diff)
- deraadt@cvs.openbsd.org 2005/03/31 18:39:21
[scp.c] copy argv[] element instead of smashing the one that ps will see; ok otto
Diffstat (limited to 'scp.c')
-rw-r--r--scp.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/scp.c b/scp.c
index f69fd05f..dcea1946 100644
--- a/scp.c
+++ b/scp.c
@@ -71,7 +71,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: scp.c,v 1.119 2005/01/24 10:22:06 dtucker Exp $");
+RCSID("$OpenBSD: scp.c,v 1.120 2005/03/31 18:39:21 deraadt Exp $");
#include "xmalloc.h"
#include "atomicio.h"
@@ -361,20 +361,23 @@ void
toremote(char *targ, int argc, char **argv)
{
int i, len;
- char *bp, *host, *src, *suser, *thost, *tuser;
+ char *bp, *host, *src, *suser, *thost, *tuser, *arg;
*targ++ = 0;
if (*targ == 0)
targ = ".";
- if ((thost = strrchr(argv[argc - 1], '@'))) {
+ arg = strdup(argv[argc - 1]);
+ if (!arg)
+ err(1, "malloc");
+ if ((thost = strrchr(arg, '@'))) {
/* user@host */
*thost++ = 0;
- tuser = argv[argc - 1];
+ tuser = arg;
if (*tuser == '\0')
tuser = NULL;
} else {
- thost = argv[argc - 1];
+ thost = arg;
tuser = NULL;
}