From 1879b1847bc5d429b0d334c6e1aab51729a46474 Mon Sep 17 00:00:00 2001 From: djm Date: Mon, 10 Jul 2006 12:19:53 +0000 Subject: [PATCH] - djm@cvs.openbsd.org 2006/07/10 12:03:20 [scp.c] duplicate argv at the start of main() because it gets modified later; pointed out by deraadt@ ok markus@ --- ChangeLog | 5 +++++ scp.c | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index dbca0128..3f76aec5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -87,6 +87,11 @@ [openbsd-compat/mktemp.c openbsd-compat/openbsd-compat.h] [openbsd-compat/port-tun.c openbsd-compat/readpassphrase.c] [openbsd-compat/xcrypt.c] Fix includes.h fallout, mainly fcntl.h + - OpenBSD CVS Sync + - djm@cvs.openbsd.org 2006/07/10 12:03:20 + [scp.c] + duplicate argv at the start of main() because it gets modified later; + pointed out by deraadt@ ok markus@ 20060706 - (dtucker) [configure.ac] Try AIX blibpath test in different order when diff --git a/scp.c b/scp.c index 600df161..6fe246d8 100644 --- a/scp.c +++ b/scp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: scp.c,v 1.144 2006/07/09 15:15:10 stevesk Exp $ */ +/* $OpenBSD: scp.c,v 1.145 2006/07/10 12:03:20 djm Exp $ */ /* * scp - secure remote copy. This is basically patched BSD rcp which * uses ssh to do the data transfer (instead of using rcmd). @@ -272,15 +272,21 @@ void usage(void); int main(int argc, char **argv) { - int ch, fflag, tflag, status; + int ch, fflag, tflag, status, n; double speed; - char *targ, *endp; + char *targ, *endp, **newargv; extern char *optarg; extern int optind; /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ sanitise_stdfd(); + /* Copy argv, because we modify it */ + newargv = xcalloc(MAX(argc + 1, 1), sizeof(*newargv)); + for (n = 0; n < argc; n++) + newargv[n] = xstrdup(argv[n]); + argv = newargv; + __progname = ssh_get_progname(argv[0]); memset(&args, '\0', sizeof(args)); -- 2.45.1