diff --git a/pam_goatherd.c b/pam_goatherd.c index 56199ba5885052ebe8f0bddb04f3592e4015bc48..787937a00181970e393aa6eb52b06871cd3c932c 100644 --- a/pam_goatherd.c +++ b/pam_goatherd.c @@ -75,12 +75,16 @@ static int verify_cb(gnutls_session_t session) { static int send_full(gnutls_session_t session, const void *data, size_t len) { ssize_t sent; - while (len > 0 && (sent = gnutls_record_send(session, data, len)) > 0) { + while (len > 0 && (sent = gnutls_record_send(session, data, len)) > 0) + { data += sent; len -= (size_t)sent; } + if (sent < 0) + { return (int)sent; + } return 0; } @@ -177,7 +181,9 @@ static int check_hotp(struct cfg cfg, size_t n_server, const char *user, const c do { err = gnutls_handshake(session); - } while (err < 0 && !gnutls_error_is_fatal(err)); + } + while (err < 0 && !gnutls_error_is_fatal(err)); + if (err < 0) { dbgp("handshake failed"); @@ -212,10 +218,14 @@ static int check_hotp(struct cfg cfg, size_t n_server, const char *user, const c if (recvd >= strlen(str_ok) && !strncmp(buf, str_ok, strlen(str_ok))) { dbgp("OK"); err = PAM_SUCCESS; - } else if (recvd >= strlen(str_fail) && !strncmp(buf, str_fail, strlen(str_fail))) { + } + else if (recvd >= strlen(str_fail) && !strncmp(buf, str_fail, strlen(str_fail))) + { dbgp("FAIL"); err = PAM_AUTH_ERR; - } else { + } + else + { dbgp("Unexpected response"); err = PAM_AUTHINFO_UNAVAIL; }