]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
- djm@cvs.openbsd.org 2011/09/09 22:37:01
authorDamien Miller <djm@mindrot.org>
Thu, 22 Sep 2011 11:38:00 +0000 (21:38 +1000)
committerDamien Miller <djm@mindrot.org>
Thu, 22 Sep 2011 11:38:00 +0000 (21:38 +1000)
     [scp.c]
     suppress adding '--' to remote commandlines when the first argument
     does not start with '-'. saves breakage on some difficult-to-upgrade
     embedded/router platforms; feedback & ok dtucker ok markus

ChangeLog
scp.c

index 4c69c135afddea77388a302e3dea0e79f46fa08f..cd7032735c4d930229891837a92783c5b28d9ef7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
      [PROTOCOL.mux]
      MUX_C_CLOSE_FWD includes forward type in message (though it isn't
      implemented anyway)
+   - djm@cvs.openbsd.org 2011/09/09 22:37:01
+     [scp.c]
+     suppress adding '--' to remote commandlines when the first argument
+     does not start with '-'. saves breakage on some difficult-to-upgrade
+     embedded/router platforms; feedback & ok dtucker ok markus
 
 20110909
  - (dtucker) [entropy.h] Bug #1932: remove old definition of init_rng.  From
diff --git a/scp.c b/scp.c
index 18b2597fe13b8106a04528ae4b95b50150fe7cdf..08587b5f2dd8f416633e6f5a07ac65446281c874 100644 (file)
--- a/scp.c
+++ b/scp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: scp.c,v 1.170 2010/12/09 14:13:33 jmc Exp $ */
+/* $OpenBSD: scp.c,v 1.171 2011/09/09 22:37:01 djm Exp $ */
 /*
  * scp - secure remote copy.  This is basically patched BSD rcp which
  * uses ssh to do the data transfer (instead of using rcmd).
@@ -601,12 +601,14 @@ toremote(char *targ, int argc, char **argv)
                                host = cleanhostname(argv[i]);
                                suser = NULL;
                        }
-                       xasprintf(&bp, "%s -f -- %s", cmd, src);
+                       xasprintf(&bp, "%s -f %s%s", cmd,
+                           *src == '-' ? "-- " : "", src);
                        if (do_cmd(host, suser, bp, &remin, &remout) < 0)
                                exit(1);
                        (void) xfree(bp);
                        host = cleanhostname(thost);
-                       xasprintf(&bp, "%s -t -- %s", cmd, targ);
+                       xasprintf(&bp, "%s -t %s%s", cmd,
+                           *targ == '-' ? "-- " : "", targ);
                        if (do_cmd2(host, tuser, bp, remin, remout) < 0)
                                exit(1);
                        (void) xfree(bp);
@@ -652,7 +654,8 @@ toremote(char *targ, int argc, char **argv)
                                errs = 1;
                } else {        /* local to remote */
                        if (remin == -1) {
-                               xasprintf(&bp, "%s -t -- %s", cmd, targ);
+                               xasprintf(&bp, "%s -t %s%s", cmd,
+                                   *targ == '-' ? "-- " : "", targ);
                                host = cleanhostname(thost);
                                if (do_cmd(host, tuser, bp, &remin,
                                    &remout) < 0)
@@ -705,7 +708,8 @@ tolocal(int argc, char **argv)
                                suser = pwd->pw_name;
                }
                host = cleanhostname(host);
-               xasprintf(&bp, "%s -f -- %s", cmd, src);
+               xasprintf(&bp, "%s -f %s%s",
+                   cmd, *src == '-' ? "-- " : "", src);
                if (do_cmd(host, suser, bp, &remin, &remout) < 0) {
                        (void) xfree(bp);
                        ++errs;