#include #include #include "ad_func.h" extern int errno; int main(int argc,char **argv) { char *login, *password; int r, i; char up[CHAR_MAX]; int uplen; ad_pwd *ad; if (!argv[1]) _exit(2); uplen = 0; for (;;) { do r = read(3,up + uplen,sizeof(up) - uplen); while ((r == -1) && (errno == EINTR)); if (r == -1) _exit(111); if (r == 0) break; uplen += r; if (uplen >= sizeof(up)) _exit(1); } close(3); i = 0; if (i >= uplen) _exit(2); login = up + i; while (up[i++]) if (i >= uplen) _exit(2); password = up + i; if (i >= uplen) _exit(2); while (up[i++]) if (i >= uplen) _exit(2); if(ad_verify_user(login, password)!=AD_SUCCESS) _exit(111); ad=getdefault_mailuser(login); if(!ad->is_complete) _exit(111); if(!setup_identity(ad)) _exit(111); execvp(argv[1],argv + 1); _exit(111); }