|
|
static void | static void |
doit(struct sockaddr_in *fromp) | doit(struct sockaddr_in *fromp) |
{ | { |
char cmdbuf[ARG_MAX+1]; |
char *cmdbuf; |
|
long cmdbuflen; |
char user[16], pass[16]; | char user[16], pass[16]; |
struct passwd *pwd; | struct passwd *pwd; |
int s = -1; | int s = -1; |
|
|
#endif | #endif |
#endif /* USE_PAM */ | #endif /* USE_PAM */ |
| |
|
cmdbuflen = sysconf (_SC_ARG_MAX); |
|
if (!(cmdbuflen > 0)) { |
|
syslog (LOG_ERR, "sysconf (_SC_ARG_MAX) failed"); |
|
fatal ("sysconf (_SC_ARG_MAX) failed\n"); |
|
} |
|
|
|
cmdbuf = malloc (++cmdbuflen); |
|
if (cmdbuf == NULL) { |
|
syslog (LOG_ERR, "Could not allocate space for cmdbuf"); |
|
fatal ("Could not allocate space for cmdbuf\n"); |
|
} |
|
|
signal(SIGINT, SIG_DFL); | signal(SIGINT, SIG_DFL); |
signal(SIGQUIT, SIG_DFL); | signal(SIGQUIT, SIG_DFL); |
signal(SIGTERM, SIG_DFL); | signal(SIGTERM, SIG_DFL); |
|
|
| |
getstr(user, sizeof(user), "username too long\n"); | getstr(user, sizeof(user), "username too long\n"); |
getstr(pass, sizeof(pass), "password too long\n"); | getstr(pass, sizeof(pass), "password too long\n"); |
getstr(cmdbuf, sizeof(cmdbuf), "command too long\n"); |
getstr(cmdbuf, cmdbuflen, "command too long\n"); |
#ifdef USE_PAM | #ifdef USE_PAM |
#define PAM_BAIL if (pam_error != PAM_SUCCESS) { \ | #define PAM_BAIL if (pam_error != PAM_SUCCESS) { \ |
pam_end(pamh, pam_error); exit(1); \ | pam_end(pamh, pam_error); exit(1); \ |