|
Lines 1-4
Link Here
|
| 1 |
/* $OpenBSD: scp.c,v 1.164 2008/10/10 04:55:16 stevesk Exp $ */ |
1 |
/* $OpenBSD: scp.c,v 1.165 2009/12/20 07:28:36 guenther Exp $ */ |
| 2 |
/* |
2 |
/* |
| 3 |
* scp - secure remote copy. This is basically patched BSD rcp which |
3 |
* scp - secure remote copy. This is basically patched BSD rcp which |
| 4 |
* uses ssh to do the data transfer (instead of using rcmd). |
4 |
* uses ssh to do the data transfer (instead of using rcmd). |
|
Lines 228-235
Link Here
|
| 228 |
close(pout[1]); |
228 |
close(pout[1]); |
| 229 |
|
229 |
|
| 230 |
replacearg(&args, 0, "%s", ssh_program); |
230 |
replacearg(&args, 0, "%s", ssh_program); |
| 231 |
if (remuser != NULL) |
231 |
if (remuser != NULL) { |
| 232 |
addargs(&args, "-l%s", remuser); |
232 |
addargs(&args, "-l"); |
|
|
233 |
addargs(&args, "%s", remuser); |
| 234 |
} |
| 235 |
addargs(&args, "--"); |
| 233 |
addargs(&args, "%s", host); |
236 |
addargs(&args, "%s", host); |
| 234 |
addargs(&args, "%s", cmd); |
237 |
addargs(&args, "%s", cmd); |
| 235 |
|
238 |
|
|
Lines 318-327
Link Here
|
| 318 |
case 'c': |
321 |
case 'c': |
| 319 |
case 'i': |
322 |
case 'i': |
| 320 |
case 'F': |
323 |
case 'F': |
| 321 |
addargs(&args, "-%c%s", ch, optarg); |
324 |
addargs(&args, "-%c", ch); |
|
|
325 |
addargs(&args, "%s", optarg); |
| 322 |
break; |
326 |
break; |
| 323 |
case 'P': |
327 |
case 'P': |
| 324 |
addargs(&args, "-p%s", optarg); |
328 |
addargs(&args, "-p"); |
|
|
329 |
addargs(&args, "%s", optarg); |
| 325 |
break; |
330 |
break; |
| 326 |
case 'B': |
331 |
case 'B': |
| 327 |
addargs(&args, "-oBatchmode yes"); |
332 |
addargs(&args, "-oBatchmode yes"); |
|
Lines 526-531
Link Here
|
| 526 |
} else { |
531 |
} else { |
| 527 |
host = cleanhostname(argv[i]); |
532 |
host = cleanhostname(argv[i]); |
| 528 |
} |
533 |
} |
|
|
534 |
addargs(&alist, "--"); |
| 529 |
addargs(&alist, "%s", host); |
535 |
addargs(&alist, "%s", host); |
| 530 |
addargs(&alist, "%s", cmd); |
536 |
addargs(&alist, "%s", cmd); |
| 531 |
addargs(&alist, "%s", src); |
537 |
addargs(&alist, "%s", src); |
|
Lines 536-542
Link Here
|
| 536 |
errs = 1; |
542 |
errs = 1; |
| 537 |
} else { /* local to remote */ |
543 |
} else { /* local to remote */ |
| 538 |
if (remin == -1) { |
544 |
if (remin == -1) { |
| 539 |
xasprintf(&bp, "%s -t %s", cmd, targ); |
545 |
xasprintf(&bp, "%s -t -- %s", cmd, targ); |
| 540 |
host = cleanhostname(thost); |
546 |
host = cleanhostname(thost); |
| 541 |
if (do_cmd(host, tuser, bp, &remin, |
547 |
if (do_cmd(host, tuser, bp, &remin, |
| 542 |
&remout) < 0) |
548 |
&remout) < 0) |
|
Lines 569-574
Link Here
|
| 569 |
addargs(&alist, "-r"); |
575 |
addargs(&alist, "-r"); |
| 570 |
if (pflag) |
576 |
if (pflag) |
| 571 |
addargs(&alist, "-p"); |
577 |
addargs(&alist, "-p"); |
|
|
578 |
addargs(&alist, "--"); |
| 572 |
addargs(&alist, "%s", argv[i]); |
579 |
addargs(&alist, "%s", argv[i]); |
| 573 |
addargs(&alist, "%s", argv[argc-1]); |
580 |
addargs(&alist, "%s", argv[argc-1]); |
| 574 |
if (do_local_cmd(&alist)) |
581 |
if (do_local_cmd(&alist)) |
|
Lines 588-594
Link Here
|
| 588 |
suser = pwd->pw_name; |
595 |
suser = pwd->pw_name; |
| 589 |
} |
596 |
} |
| 590 |
host = cleanhostname(host); |
597 |
host = cleanhostname(host); |
| 591 |
xasprintf(&bp, "%s -f %s", cmd, src); |
598 |
xasprintf(&bp, "%s -f -- %s", cmd, src); |
| 592 |
if (do_cmd(host, suser, bp, &remin, &remout) < 0) { |
599 |
if (do_cmd(host, suser, bp, &remin, &remout) < 0) { |
| 593 |
(void) xfree(bp); |
600 |
(void) xfree(bp); |
| 594 |
++errs; |
601 |
++errs; |