зеркало из https://github.com/Azure/sonic-openssh.git
- dtucker@cvs.openbsd.org 2007/06/12 13:54:28
[scp.c] Encode filename with strnvis if the name contains a newline (which can't be represented in the scp protocol), from bz #891. ok markus@
This commit is contained in:
Родитель
0409e15078
Коммит
bed63112f5
|
@ -43,6 +43,10 @@
|
|||
- jmc@cvs.openbsd.org 2007/06/12 13:43:55
|
||||
[ssh.1]
|
||||
add -K to SYNOPSIS;
|
||||
- dtucker@cvs.openbsd.org 2007/06/12 13:54:28
|
||||
[scp.c]
|
||||
Encode filename with strnvis if the name contains a newline (which can't
|
||||
be represented in the scp protocol), from bz #891. ok markus@
|
||||
|
||||
20070611
|
||||
- (djm) Bugzilla #1306: silence spurious error messages from hang-on-exit
|
||||
|
@ -3057,4 +3061,4 @@
|
|||
OpenServer 6 and add osr5bigcrypt support so when someone migrates
|
||||
passwords between UnixWare and OpenServer they will still work. OK dtucker@
|
||||
|
||||
$Id: ChangeLog,v 1.4698 2007/06/12 14:00:58 dtucker Exp $
|
||||
$Id: ChangeLog,v 1.4699 2007/06/12 14:02:07 dtucker Exp $
|
||||
|
|
16
scp.c
16
scp.c
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: scp.c,v 1.157 2007/06/12 08:24:20 djm Exp $ */
|
||||
/* $OpenBSD: scp.c,v 1.158 2007/06/12 13:54:28 dtucker Exp $ */
|
||||
/*
|
||||
* scp - secure remote copy. This is basically patched BSD rcp which
|
||||
* uses ssh to do the data transfer (instead of using rcmd).
|
||||
|
@ -96,6 +96,9 @@
|
|||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#if defined(HAVE_STRNVIS) && defined(HAVE_VIS_H)
|
||||
#include <vis.h>
|
||||
#endif
|
||||
|
||||
#include "xmalloc.h"
|
||||
#include "atomicio.h"
|
||||
|
@ -582,7 +585,7 @@ source(int argc, char **argv)
|
|||
off_t i, amt, statbytes;
|
||||
size_t result;
|
||||
int fd = -1, haderr, indx;
|
||||
char *last, *name, buf[2048];
|
||||
char *last, *name, buf[2048], encname[MAXPATHLEN];
|
||||
int len;
|
||||
|
||||
for (indx = 0; indx < argc; ++indx) {
|
||||
|
@ -591,13 +594,12 @@ source(int argc, char **argv)
|
|||
len = strlen(name);
|
||||
while (len > 1 && name[len-1] == '/')
|
||||
name[--len] = '\0';
|
||||
if (strchr(name, '\n') != NULL) {
|
||||
run_err("%s: skipping, filename contains a newline",
|
||||
name);
|
||||
goto next;
|
||||
}
|
||||
if ((fd = open(name, O_RDONLY|O_NONBLOCK, 0)) < 0)
|
||||
goto syserr;
|
||||
if (strchr(name, '\n') != NULL) {
|
||||
strnvis(encname, name, sizeof(encname), VIS_NL);
|
||||
name = encname;
|
||||
}
|
||||
if (fstat(fd, &stb) < 0) {
|
||||
syserr: run_err("%s: %s", name, strerror(errno));
|
||||
goto next;
|
||||
|
|
Загрузка…
Ссылка в новой задаче