X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=ckuus7.c;h=8801478e68bbc1bf5d1e98bde0123c44eff64f35;hb=f721baf9f206ea40f5d44e276ffc9cf9457aa370;hp=4268ef1c8236667c76943dbf0ffa118a74cf6c15;hpb=8d5a97cca5dc3d41681e7a2dd709ac0ea93e73c5;p=ckermit.git diff --git a/ckuus7.c b/ckuus7.c index 4268ef1..8801478 100644 --- a/ckuus7.c +++ b/ckuus7.c @@ -98,6 +98,12 @@ extern int g_matchdot, hints, xcmdsrc, rcdactive; extern char * k_info_dir; +#ifdef CK_LOGIN +#ifdef CK_PAM +int gotemptypasswd = 0; /* distinguish empty passwd from none given */ +#endif /* CK_PAM */ +#endif /* CK_LOGIN */ + #ifndef NOSPL extern int nmac; extern struct mtab *mactab; @@ -14656,9 +14662,9 @@ ckxlogin(userid, passwd, acct, promptok) #ifdef CK_RECALL extern int on_recall; /* around Password prompting */ #endif /* CK_RECALL */ -#ifdef CK_PAM +#ifdef COMMENT extern int guest; -#endif /* CK_PAM */ +#endif /* COMMENT */ int rprompt = 0; /* Restore prompt */ #ifdef CKSYSLOG int savlog; @@ -14774,9 +14780,9 @@ ckxlogin(userid, passwd, acct, promptok) debug(F111,"ckxlogin zvuser",userid,ok); if (!*passwd && promptok -#ifdef CK_PAM +#ifdef COMMENT && guest -#endif /* CK_PAM */ +#endif /* COMMENT */ ) { char prmpt[80]; @@ -14852,6 +14858,9 @@ ckxlogin(userid, passwd, acct, promptok) if (pflag) prompt(xxstring); /* Issue prompt if at top level */ cmres(); /* Reset the parser */ for (x = -1; x < 0;) { /* Prompt till they answer */ +#ifdef CK_PAM + gotemptypasswd=0; +#endif /* CK_PAM */ x = cmtxt("","",&s,NULL); /* Get a literal line of text */ if (x == -4 || x == -10) { printf("\r\n%sLogin cancelled\n", @@ -14861,6 +14870,10 @@ ckxlogin(userid, passwd, acct, promptok) #endif /* CKSYSLOG */ doexit(GOOD_EXIT,0); } +#ifdef CK_PAM + if(!*s) + gotemptypasswd=1; +#endif /* CK_PAM */ if (sstate) /* In case of a Kermit packet */ goto XCKXLOG; cmres(); /* Reset the parser again */ @@ -14895,6 +14908,12 @@ ckxlogin(userid, passwd, acct, promptok) if (ok) { ok = zvpass((char *)passwd); /* Check password */ debug(F101,"ckxlogin zvpass","",ok); +#ifdef CK_PAM + } else { + /* Fake pam password failure for nonexistent users */ + sleep(1); + printf("Authentication failure\n"); +#endif } if (ok > 0 && isguest) {