mirror of git://anongit.mindrot.org/openssh.git
- deraadt@cvs.openbsd.org 2001/02/08 14:38:54
[scp.c] memory leak fix, and snprintf throughout
This commit is contained in:
parent
af13ccacac
commit
f6b7b09a4e
|
@ -17,6 +17,10 @@
|
||||||
[auth2.c]
|
[auth2.c]
|
||||||
fix typo
|
fix typo
|
||||||
- (djm) Update spec files
|
- (djm) Update spec files
|
||||||
|
- (bal) OpenBSD sync:
|
||||||
|
- deraadt@cvs.openbsd.org 2001/02/08 14:38:54
|
||||||
|
[scp.c]
|
||||||
|
memory leak fix, and snprintf throughout
|
||||||
|
|
||||||
20010208
|
20010208
|
||||||
- (djm) Don't delete external askpass program in make uninstall target.
|
- (djm) Don't delete external askpass program in make uninstall target.
|
||||||
|
|
39
scp.c
39
scp.c
|
@ -75,7 +75,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$OpenBSD: scp.c,v 1.53 2001/02/04 23:56:22 deraadt Exp $");
|
RCSID("$OpenBSD: scp.c,v 1.55 2001/02/08 14:38:54 deraadt Exp $");
|
||||||
|
|
||||||
#include "xmalloc.h"
|
#include "xmalloc.h"
|
||||||
#include "atomicio.h"
|
#include "atomicio.h"
|
||||||
|
@ -326,7 +326,8 @@ main(argc, argv)
|
||||||
|
|
||||||
remin = remout = -1;
|
remin = remout = -1;
|
||||||
/* Command to be executed on remote system using "ssh". */
|
/* Command to be executed on remote system using "ssh". */
|
||||||
(void) sprintf(cmd, "scp%s%s%s%s", verbose_mode ? " -v" : "",
|
(void) snprintf(cmd, sizeof cmd, "scp%s%s%s%s",
|
||||||
|
verbose_mode ? " -v" : "",
|
||||||
iamrecursive ? " -r" : "", pflag ? " -p" : "",
|
iamrecursive ? " -r" : "", pflag ? " -p" : "",
|
||||||
targetshouldbedirectory ? " -d" : "");
|
targetshouldbedirectory ? " -d" : "");
|
||||||
|
|
||||||
|
@ -397,16 +398,18 @@ toremote(targ, argc, argv)
|
||||||
suser = pwd->pw_name;
|
suser = pwd->pw_name;
|
||||||
else if (!okname(suser))
|
else if (!okname(suser))
|
||||||
continue;
|
continue;
|
||||||
sprintf(bp,
|
snprintf(bp, len,
|
||||||
"%s%s -x -o'FallBackToRsh no' -n -l %s %s %s %s '%s%s%s:%s'",
|
"%s%s -x -o'FallBackToRsh no' -n "
|
||||||
|
"-l %s %s %s %s '%s%s%s:%s'",
|
||||||
ssh_program, verbose_mode ? " -v" : "",
|
ssh_program, verbose_mode ? " -v" : "",
|
||||||
suser, host, cmd, src,
|
suser, host, cmd, src,
|
||||||
tuser ? tuser : "", tuser ? "@" : "",
|
tuser ? tuser : "", tuser ? "@" : "",
|
||||||
thost, targ);
|
thost, targ);
|
||||||
} else {
|
} else {
|
||||||
host = cleanhostname(argv[i]);
|
host = cleanhostname(argv[i]);
|
||||||
sprintf(bp,
|
snprintf(bp, len,
|
||||||
"exec %s%s -x -o'FallBackToRsh no' -n %s %s %s '%s%s%s:%s'",
|
"exec %s%s -x -o'FallBackToRsh no' -n %s "
|
||||||
|
"%s %s '%s%s%s:%s'",
|
||||||
ssh_program, verbose_mode ? " -v" : "",
|
ssh_program, verbose_mode ? " -v" : "",
|
||||||
host, cmd, src,
|
host, cmd, src,
|
||||||
tuser ? tuser : "", tuser ? "@" : "",
|
tuser ? tuser : "", tuser ? "@" : "",
|
||||||
|
@ -420,7 +423,7 @@ toremote(targ, argc, argv)
|
||||||
if (remin == -1) {
|
if (remin == -1) {
|
||||||
len = strlen(targ) + CMDNEEDS + 20;
|
len = strlen(targ) + CMDNEEDS + 20;
|
||||||
bp = xmalloc(len);
|
bp = xmalloc(len);
|
||||||
(void) sprintf(bp, "%s -t %s", cmd, targ);
|
(void) snprintf(bp, len, "%s -t %s", cmd, targ);
|
||||||
host = cleanhostname(thost);
|
host = cleanhostname(thost);
|
||||||
if (do_cmd(host, tuser, bp, &remin,
|
if (do_cmd(host, tuser, bp, &remin,
|
||||||
&remout, argc) < 0)
|
&remout, argc) < 0)
|
||||||
|
@ -447,7 +450,7 @@ tolocal(argc, argv)
|
||||||
len = strlen(_PATH_CP) + strlen(argv[i]) +
|
len = strlen(_PATH_CP) + strlen(argv[i]) +
|
||||||
strlen(argv[argc - 1]) + 20;
|
strlen(argv[argc - 1]) + 20;
|
||||||
bp = xmalloc(len);
|
bp = xmalloc(len);
|
||||||
(void) sprintf(bp, "exec %s%s%s %s %s", _PATH_CP,
|
(void) snprintf(bp, len, "exec %s%s%s %s %s", _PATH_CP,
|
||||||
iamrecursive ? " -r" : "", pflag ? " -p" : "",
|
iamrecursive ? " -r" : "", pflag ? " -p" : "",
|
||||||
argv[i], argv[argc - 1]);
|
argv[i], argv[argc - 1]);
|
||||||
if (verbose_mode)
|
if (verbose_mode)
|
||||||
|
@ -474,7 +477,7 @@ tolocal(argc, argv)
|
||||||
host = cleanhostname(host);
|
host = cleanhostname(host);
|
||||||
len = strlen(src) + CMDNEEDS + 20;
|
len = strlen(src) + CMDNEEDS + 20;
|
||||||
bp = xmalloc(len);
|
bp = xmalloc(len);
|
||||||
(void) sprintf(bp, "%s -f %s", cmd, src);
|
(void) snprintf(bp, len, "%s -f %s", cmd, src);
|
||||||
if (do_cmd(host, suser, bp, &remin, &remout, argc) < 0) {
|
if (do_cmd(host, suser, bp, &remin, &remout, argc) < 0) {
|
||||||
(void) xfree(bp);
|
(void) xfree(bp);
|
||||||
++errs;
|
++errs;
|
||||||
|
@ -531,7 +534,7 @@ syserr: run_err("%s: %s", name, strerror(errno));
|
||||||
* Make it compatible with possible future
|
* Make it compatible with possible future
|
||||||
* versions expecting microseconds.
|
* versions expecting microseconds.
|
||||||
*/
|
*/
|
||||||
(void) sprintf(buf, "T%lu 0 %lu 0\n",
|
(void) snprintf(buf, sizeof buf, "T%lu 0 %lu 0\n",
|
||||||
(u_long) stb.st_mtime,
|
(u_long) stb.st_mtime,
|
||||||
(u_long) stb.st_atime);
|
(u_long) stb.st_atime);
|
||||||
(void) atomicio(write, remout, buf, strlen(buf));
|
(void) atomicio(write, remout, buf, strlen(buf));
|
||||||
|
@ -539,7 +542,7 @@ syserr: run_err("%s: %s", name, strerror(errno));
|
||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
#define FILEMODEMASK (S_ISUID|S_ISGID|S_IRWXU|S_IRWXG|S_IRWXO)
|
#define FILEMODEMASK (S_ISUID|S_ISGID|S_IRWXU|S_IRWXG|S_IRWXO)
|
||||||
sprintf(buf, "C%04o %lu %s\n",
|
snprintf(buf, sizeof buf, "C%04o %lu %s\n",
|
||||||
(u_int) (stb.st_mode & FILEMODEMASK),
|
(u_int) (stb.st_mode & FILEMODEMASK),
|
||||||
(u_long) stb.st_size, last);
|
(u_long) stb.st_size, last);
|
||||||
if (verbose_mode) {
|
if (verbose_mode) {
|
||||||
|
@ -608,7 +611,7 @@ rsource(name, statp)
|
||||||
else
|
else
|
||||||
last++;
|
last++;
|
||||||
if (pflag) {
|
if (pflag) {
|
||||||
(void) sprintf(path, "T%lu 0 %lu 0\n",
|
(void) snprintf(path, sizeof(path), "T%lu 0 %lu 0\n",
|
||||||
(u_long) statp->st_mtime,
|
(u_long) statp->st_mtime,
|
||||||
(u_long) statp->st_atime);
|
(u_long) statp->st_atime);
|
||||||
(void) atomicio(write, remout, path, strlen(path));
|
(void) atomicio(write, remout, path, strlen(path));
|
||||||
|
@ -617,7 +620,7 @@ rsource(name, statp)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(void) sprintf(path, "D%04o %d %.1024s\n",
|
(void) snprintf(path, sizeof path, "D%04o %d %.1024s\n",
|
||||||
(u_int) (statp->st_mode & FILEMODEMASK), 0, last);
|
(u_int) (statp->st_mode & FILEMODEMASK), 0, last);
|
||||||
if (verbose_mode)
|
if (verbose_mode)
|
||||||
fprintf(stderr, "Entering directory: %s", path);
|
fprintf(stderr, "Entering directory: %s", path);
|
||||||
|
@ -635,7 +638,7 @@ rsource(name, statp)
|
||||||
run_err("%s/%s: name too long", name, dp->d_name);
|
run_err("%s/%s: name too long", name, dp->d_name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
(void) sprintf(path, "%s/%s", name, dp->d_name);
|
(void) snprintf(path, sizeof path, "%s/%s", name, dp->d_name);
|
||||||
vect[0] = path;
|
vect[0] = path;
|
||||||
source(1, vect);
|
source(1, vect);
|
||||||
}
|
}
|
||||||
|
@ -765,9 +768,13 @@ sink(argc, argv)
|
||||||
size_t need;
|
size_t need;
|
||||||
|
|
||||||
need = strlen(targ) + strlen(cp) + 250;
|
need = strlen(targ) + strlen(cp) + 250;
|
||||||
if (need > cursize)
|
if (need > cursize) {
|
||||||
|
if (namebuf)
|
||||||
|
xfree(namebuf);
|
||||||
namebuf = xmalloc(need);
|
namebuf = xmalloc(need);
|
||||||
(void) sprintf(namebuf, "%s%s%s", targ,
|
cursize = need;
|
||||||
|
}
|
||||||
|
(void) snprintf(namebuf, need, "%s%s%s", targ,
|
||||||
*targ ? "/" : "", cp);
|
*targ ? "/" : "", cp);
|
||||||
np = namebuf;
|
np = namebuf;
|
||||||
} else
|
} else
|
||||||
|
|
Loading…
Reference in New Issue