Check return value from asprintf instead of string != NULL since it
undefined behavior on Linux. From Björn Sandell git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16218 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -179,6 +179,7 @@ toremote(char *targ, int argc, char **argv)
|
|||||||
for (i = 0; i < argc - 1; i++) {
|
for (i = 0; i < argc - 1; i++) {
|
||||||
src = colon(argv[i]);
|
src = colon(argv[i]);
|
||||||
if (src) { /* remote to remote */
|
if (src) { /* remote to remote */
|
||||||
|
int ret;
|
||||||
*src++ = 0;
|
*src++ = 0;
|
||||||
if (*src == 0)
|
if (*src == 0)
|
||||||
src = ".";
|
src = ".";
|
||||||
@@ -190,28 +191,27 @@ toremote(char *targ, int argc, char **argv)
|
|||||||
suser = pwd->pw_name;
|
suser = pwd->pw_name;
|
||||||
else if (!okname(suser))
|
else if (!okname(suser))
|
||||||
continue;
|
continue;
|
||||||
asprintf(&bp,
|
ret = asprintf(&bp,
|
||||||
"%s%s %s -l %s -n %s %s '%s%s%s:%s'",
|
"%s%s %s -l %s -n %s %s '%s%s%s:%s'",
|
||||||
_PATH_RSH, eflag ? " -e" : "",
|
_PATH_RSH, eflag ? " -e" : "",
|
||||||
host, suser, cmd, src,
|
host, suser, cmd, src,
|
||||||
tuser ? tuser : "", tuser ? "@" : "",
|
tuser ? tuser : "", tuser ? "@" : "",
|
||||||
thost, targ);
|
thost, targ);
|
||||||
} else {
|
} else {
|
||||||
asprintf(&bp,
|
ret = asprintf(&bp,
|
||||||
"exec %s%s %s -n %s %s '%s%s%s:%s'",
|
"exec %s%s %s -n %s %s '%s%s%s:%s'",
|
||||||
_PATH_RSH, eflag ? " -e" : "",
|
_PATH_RSH, eflag ? " -e" : "",
|
||||||
argv[i], cmd, src,
|
argv[i], cmd, src,
|
||||||
tuser ? tuser : "", tuser ? "@" : "",
|
tuser ? tuser : "", tuser ? "@" : "",
|
||||||
thost, targ);
|
thost, targ);
|
||||||
}
|
}
|
||||||
if (bp == NULL)
|
if (ret == -1)
|
||||||
err (1, "malloc");
|
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) {
|
||||||
asprintf(&bp, "%s -t %s", cmd, targ);
|
if (asprintf(&bp, "%s -t %s", cmd, targ) == -1)
|
||||||
if (bp == NULL)
|
|
||||||
err (1, "malloc");
|
err (1, "malloc");
|
||||||
host = thost;
|
host = thost;
|
||||||
|
|
||||||
@@ -235,11 +235,13 @@ tolocal(int argc, char **argv)
|
|||||||
char *bp, *host, *src, *suser;
|
char *bp, *host, *src, *suser;
|
||||||
|
|
||||||
for (i = 0; i < argc - 1; i++) {
|
for (i = 0; i < argc - 1; i++) {
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (!(src = colon(argv[i]))) { /* Local to local. */
|
if (!(src = colon(argv[i]))) { /* Local to local. */
|
||||||
asprintf(&bp, "exec %s%s%s %s %s", _PATH_CP,
|
ret = asprintf(&bp, "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)
|
if (ret == -1)
|
||||||
err (1, "malloc");
|
err (1, "malloc");
|
||||||
if (susystem(bp, userid))
|
if (susystem(bp, userid))
|
||||||
++errs;
|
++errs;
|
||||||
@@ -260,8 +262,8 @@ tolocal(int argc, char **argv)
|
|||||||
else if (!okname(suser))
|
else if (!okname(suser))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
asprintf(&bp, "%s -f %s", cmd, src);
|
ret = asprintf(&bp, "%s -f %s", cmd, src);
|
||||||
if (bp == NULL)
|
if (ret == -1)
|
||||||
err (1, "malloc");
|
err (1, "malloc");
|
||||||
if (do_cmd(host, suser, bp, &remin, &remout) < 0) {
|
if (do_cmd(host, suser, bp, &remin, &remout) < 0) {
|
||||||
free(bp);
|
free(bp);
|
||||||
|
Reference in New Issue
Block a user