Lines 223-229
Link Here
|
223 |
static void |
223 |
static void |
224 |
doit(struct sockaddr_in *fromp) |
224 |
doit(struct sockaddr_in *fromp) |
225 |
{ |
225 |
{ |
226 |
char cmdbuf[ARG_MAX+1]; |
226 |
char *cmdbuf; |
|
|
227 |
long cmdbuflen; |
227 |
char user[16], pass[16]; |
228 |
char user[16], pass[16]; |
228 |
struct passwd *pwd; |
229 |
struct passwd *pwd; |
229 |
int s = -1; |
230 |
int s = -1; |
Lines 242-247
Link Here
|
242 |
#endif |
243 |
#endif |
243 |
#endif /* USE_PAM */ |
244 |
#endif /* USE_PAM */ |
244 |
|
245 |
|
|
|
246 |
cmdbuflen = sysconf (_SC_ARG_MAX); |
247 |
if (!(cmdbuflen > 0)) { |
248 |
syslog (LOG_ERR, "sysconf (_SC_ARG_MAX) failed"); |
249 |
fatal ("sysconf (_SC_ARG_MAX) failed\n"); |
250 |
} |
251 |
|
252 |
cmdbuf = malloc (++cmdbuflen); |
253 |
if (cmdbuf == NULL) { |
254 |
syslog (LOG_ERR, "Could not allocate space for cmdbuf"); |
255 |
fatal ("Could not allocate space for cmdbuf\n"); |
256 |
} |
257 |
|
245 |
signal(SIGINT, SIG_DFL); |
258 |
signal(SIGINT, SIG_DFL); |
246 |
signal(SIGQUIT, SIG_DFL); |
259 |
signal(SIGQUIT, SIG_DFL); |
247 |
signal(SIGTERM, SIG_DFL); |
260 |
signal(SIGTERM, SIG_DFL); |
Lines 291-297
Link Here
|
291 |
|
304 |
|
292 |
getstr(user, sizeof(user), "username too long\n"); |
305 |
getstr(user, sizeof(user), "username too long\n"); |
293 |
getstr(pass, sizeof(pass), "password too long\n"); |
306 |
getstr(pass, sizeof(pass), "password too long\n"); |
294 |
getstr(cmdbuf, sizeof(cmdbuf), "command too long\n"); |
307 |
getstr(cmdbuf, cmdbuflen, "command too long\n"); |
295 |
#ifdef USE_PAM |
308 |
#ifdef USE_PAM |
296 |
#define PAM_BAIL if (pam_error != PAM_SUCCESS) { \ |
309 |
#define PAM_BAIL if (pam_error != PAM_SUCCESS) { \ |
297 |
pam_end(pamh, pam_error); exit(1); \ |
310 |
pam_end(pamh, pam_error); exit(1); \ |