Fixes from clang / scan-build
[freeradius.git] / src / modules / rlm_otp / otp_pw_valid.c
index c76e2c0..204e20f 100644 (file)
@@ -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",