diff options
author | das <das@FreeBSD.org> | 2005-03-21 08:01:14 +0000 |
---|---|---|
committer | das <das@FreeBSD.org> | 2005-03-21 08:01:14 +0000 |
commit | 930b2ee454d6ac2cf3665fb17ddb4c5ffbaaaea6 (patch) | |
tree | 74e9c04a9cf4fed7661ee338e044507b60a52a0e /libexec/rshd | |
parent | f5e55fd6043735ac328d3781c369fad18a4473a7 (diff) | |
download | FreeBSD-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.c | 9 |
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); |