X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Frlm_otp%2Fotp_pw_valid.c;h=204e20f58a02a9922c5510800bbf13840a2fe248;hb=94dc4bb60ec649ce899c1d5e32b575d9523a48f2;hp=c76e2c03771e70090770d58aa511b1fb0ab631a5;hpb=18be404de9422ffcf23244d9c8ad554b5d6a105f;p=freeradius.git diff --git a/src/modules/rlm_otp/otp_pw_valid.c b/src/modules/rlm_otp/otp_pw_valid.c index c76e2c0..204e20f 100644 --- a/src/modules/rlm_otp/otp_pw_valid.c +++ b/src/modules/rlm_otp/otp_pw_valid.c @@ -48,6 +48,7 @@ otprc2rlmrc(int rc) case OTP_RC_AUTH_ERR: return RLM_MODULE_REJECT; case OTP_RC_MAXTRIES: return RLM_MODULE_USERLOCK; case OTP_RC_NEXTPASSCODE: return RLM_MODULE_USERLOCK; + case OTP_RC_IPIN: return RLM_MODULE_REJECT; case OTP_RC_SERVICE_ERR: return RLM_MODULE_FAIL; default: return RLM_MODULE_FAIL; } @@ -91,8 +92,8 @@ otp_pw_valid(REQUEST *request, int pwe, const char *challenge, otp_request.pwe.pwe = pwe; /* otp_pwe_present() (done by caller) guarantees that both of these exist */ - cvp = pairfind(request->packet->vps, pwattr[pwe - 1]); - rvp = pairfind(request->packet->vps, pwattr[pwe]); + cvp = pairfind(request->packet->vps, pwattr[pwe - 1]->attr, pwattr[pwe - 1]->vendor); + rvp = pairfind(request->packet->vps, pwattr[pwe]->attr, pwattr[pwe]->vendor); /* this is just to quiet Coverity */ if (!rvp || !cvp) return RLM_MODULE_REJECT; @@ -205,8 +206,7 @@ retry: if (!fdp || fdp->fd == -1) return -1; - if ((rc = otp_write(fdp, (const char *) request, sizeof(*request))) != 0) { - if (rc == EPIPE) + if ((rc = otp_write(fdp, (const char *) request, sizeof(*request))) != sizeof(*request)) { if (rc == 0) goto retry; /* otpd disconnect */ /*TODO: pause */ else return -1; @@ -283,7 +283,7 @@ otp_write(otp_fd_t *fdp, const char *buf, size_t len) while (nleft) { if ((nwrote = write(fdp->fd, &buf[len - nleft], nleft)) == -1) { - if (errno == EINTR || errno == EPIPE) { + if (errno == EINTR) { continue; } else { (void) radlog(L_ERR, "rlm_otp: %s: write to otpd: %s",