add some const

replace a few malloc/snprintf with asprintf


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10046 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
2001-06-14 20:28:34 +00:00
parent a16844e308
commit 8ced53f487

View File

@@ -54,7 +54,8 @@ void source (int, char *[]);
void tolocal (int, char *[]); void tolocal (int, char *[]);
void toremote (char *, int, char *[]); void toremote (char *, int, char *[]);
int do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout); int do_cmd(const char *host, const char *remuser, const char *cmd,
int *fdin, int *fdout);
static int fflag, tflag; static int fflag, tflag;
@@ -133,7 +134,8 @@ main(int argc, char **argv)
remin = remout = -1; remin = remout = -1;
/* Command to be executed on remote system using "rsh". */ /* Command to be executed on remote system using "rsh". */
sprintf(cmd, "rcp%s%s%s", iamrecursive ? " -r" : "", snprintf(cmd, sizeof(cmd),
"rcp%s%s%s", iamrecursive ? " -r" : "",
pflag ? " -p" : "", targetshouldbedirectory ? " -d" : ""); pflag ? " -p" : "", targetshouldbedirectory ? " -d" : "");
signal(SIGPIPE, lostconn); signal(SIGPIPE, lostconn);
@@ -151,7 +153,7 @@ main(int argc, char **argv)
void void
toremote(char *targ, int argc, char **argv) toremote(char *targ, int argc, char **argv)
{ {
int i, len; int i;
char *bp, *host, *src, *suser, *thost, *tuser; char *bp, *host, *src, *suser, *thost, *tuser;
*targ++ = 0; *targ++ = 0;
@@ -178,37 +180,34 @@ toremote(char *targ, int argc, char **argv)
if (*src == 0) if (*src == 0)
src = "."; src = ".";
host = strchr(argv[i], '@'); host = strchr(argv[i], '@');
len = strlen(_PATH_RSH) + strlen(argv[i]) +
strlen(src) + (tuser ? strlen(tuser) : 0) +
strlen(thost) + strlen(targ) + CMDNEEDS + 20;
if (!(bp = malloc(len)))
err(1, "malloc");
if (host) { if (host) {
*host++ = 0; *host++ = '\0';
suser = argv[i]; suser = argv[i];
if (*suser == '\0') if (*suser == '\0')
suser = pwd->pw_name; suser = pwd->pw_name;
else if (!okname(suser)) else if (!okname(suser))
continue; continue;
snprintf(bp, len, asprintf(&bp,
"%s %s -l %s -n %s %s '%s%s%s:%s'", "%s %s -l %s -n %s %s '%s%s%s:%s'",
_PATH_RSH, host, suser, cmd, src, _PATH_RSH, host, suser, cmd, src,
tuser ? tuser : "", tuser ? "@" : "", tuser ? tuser : "", tuser ? "@" : "",
thost, targ); thost, targ);
} else } else {
snprintf(bp, len, asprintf(&bp,
"exec %s %s -n %s %s '%s%s%s:%s'", "exec %s %s -n %s %s '%s%s%s:%s'",
_PATH_RSH, argv[i], cmd, src, _PATH_RSH, argv[i], cmd, src,
tuser ? tuser : "", tuser ? "@" : "", tuser ? tuser : "", tuser ? "@" : "",
thost, targ); thost, targ);
}
if (bp == NULL)
err (1, "malloc");
susystem(bp, userid); susystem(bp, userid);
free(bp); free(bp);
} else { /* local to remote */ } else { /* local to remote */
if (remin == -1) { if (remin == -1) {
len = strlen(targ) + CMDNEEDS + 20; asprintf(&bp, "%s -t %s", cmd, targ);
if (!(bp = malloc(len))) if (bp == NULL)
err(1, "malloc"); err (1, "malloc");
snprintf(bp, len, "%s -t %s", cmd, targ);
host = thost; host = thost;
if (do_cmd(host, tuser, bp, &remin, &remout) < 0) if (do_cmd(host, tuser, bp, &remin, &remout) < 0)
@@ -232,13 +231,11 @@ tolocal(int argc, char **argv)
for (i = 0; i < argc - 1; i++) { for (i = 0; i < argc - 1; i++) {
if (!(src = colon(argv[i]))) { /* Local to local. */ if (!(src = colon(argv[i]))) { /* Local to local. */
len = strlen(_PATH_CP) + strlen(argv[i]) + asprintf(&bp, "exec %s%s%s %s %s", _PATH_CP,
strlen(argv[argc - 1]) + 20;
if (!(bp = malloc(len)))
err(1, "malloc");
snprintf(bp, len, "exec %s%s%s %s %s", _PATH_CP,
iamrecursive ? " -PR" : "", pflag ? " -p" : "", iamrecursive ? " -PR" : "", pflag ? " -p" : "",
argv[i], argv[argc - 1]); argv[i], argv[argc - 1]);
if (bp == NULL)
err (1, "malloc");
if (susystem(bp, userid)) if (susystem(bp, userid))
++errs; ++errs;
free(bp); free(bp);
@@ -258,10 +255,9 @@ tolocal(int argc, char **argv)
else if (!okname(suser)) else if (!okname(suser))
continue; continue;
} }
len = strlen(src) + CMDNEEDS + 20; asprintf(&bp, "%s -f %s", cmd, src);
if ((bp = malloc(len)) == NULL) if (bp == NULL)
err(1, "malloc"); err (1, "malloc");
snprintf(bp, len, "%s -f %s", cmd, src);
if (do_cmd(host, suser, bp, &remin, &remout) < 0) { if (do_cmd(host, suser, bp, &remin, &remout) < 0) {
free(bp); free(bp);
++errs; ++errs;
@@ -714,7 +710,8 @@ run_err(const char *fmt, ...)
*/ */
int int
do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout) do_cmd(const char *host, const char *remuser, const char *cmd,
int *fdin, int *fdout)
{ {
int pin[2], pout[2], reserved[2]; int pin[2], pout[2], reserved[2];