summaryrefslogtreecommitdiffstats
path: root/libexec/rshd
diff options
context:
space:
mode:
authordas <das@FreeBSD.org>2005-03-21 08:01:14 +0000
committerdas <das@FreeBSD.org>2005-03-21 08:01:14 +0000
commit930b2ee454d6ac2cf3665fb17ddb4c5ffbaaaea6 (patch)
tree74e9c04a9cf4fed7661ee338e044507b60a52a0e /libexec/rshd
parentf5e55fd6043735ac328d3781c369fad18a4473a7 (diff)
downloadFreeBSD-src-930b2ee454d6ac2cf3665fb17ddb4c5ffbaaaea6.zip
FreeBSD-src-930b2ee454d6ac2cf3665fb17ddb4c5ffbaaaea6.tar.gz
Use sysconf(_SC_ARG_MAX) instead of NCARGS.
Diffstat (limited to 'libexec/rshd')
-rw-r--r--libexec/rshd/rshd.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libexec/rshd/rshd.c b/libexec/rshd/rshd.c
index ea85388..b203bc9 100644
--- a/libexec/rshd/rshd.c
+++ b/libexec/rshd/rshd.c
@@ -195,12 +195,17 @@ doit(struct sockaddr *fromp)
int one = 1;
const char *cp, *errorstr;
char sig, buf[BUFSIZ];
- char cmdbuf[NCARGS+1], luser[16], ruser[16];
+ char *cmdbuf, luser[16], ruser[16];
char rhost[2 * MAXHOSTNAMELEN + 1];
char numericname[INET6_ADDRSTRLEN];
int af, srcport;
+ int maxcmdlen;
login_cap_t *lc;
+ maxcmdlen = (int)sysconf(_SC_ARG_MAX);
+ if (maxcmdlen <= 0 || (cmdbuf = malloc(maxcmdlen)) == NULL)
+ exit(1);
+
(void) signal(SIGINT, SIG_DFL);
(void) signal(SIGQUIT, SIG_DFL);
(void) signal(SIGTERM, SIG_DFL);
@@ -301,7 +306,7 @@ doit(struct sockaddr *fromp)
(void) alarm(60);
getstr(ruser, sizeof(ruser), "ruser");
getstr(luser, sizeof(luser), "luser");
- getstr(cmdbuf, sizeof(cmdbuf), "command");
+ getstr(cmdbuf, maxcmdlen, "command");
(void) alarm(0);
pam_err = pam_start("rsh", luser, &pamc, &pamh);
OpenPOWER on IntegriCloud