diff options
author | Nalin Dahyabhai <nalin@redhat.com> | 2010-04-20 18:23:59 -0400 |
---|---|---|
committer | Nalin Dahyabhai <nalin@redhat.com> | 2010-04-20 18:23:59 -0400 |
commit | a971ed942e65f9c3cadef5221dc9e524cf54d8e0 (patch) | |
tree | a8b348f26f751fa62b20764e381749e757e25280 | |
parent | 97e8d97a1f6fd6cba72753d2809ddda277544592 (diff) | |
download | pam_rps-a971ed942e65f9c3cadef5221dc9e524cf54d8e0.tar.gz pam_rps-a971ed942e65f9c3cadef5221dc9e524cf54d8e0.tar.xz pam_rps-a971ed942e65f9c3cadef5221dc9e524cf54d8e0.zip |
- simplify logic for choosing choices
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | src/pam_rps.c | 33 |
2 files changed, 14 insertions, 22 deletions
diff --git a/configure.ac b/configure.ac index 173829b..797610f 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,9 @@ AC_INIT(pam_rps,0.1) AM_INIT_AUTOMAKE(foreign) AC_PROG_CC +if test x$GCC = xyes ; then + CFLAGS="$CFLAGS -Wall -Wextra" +fi AC_PROG_LIBTOOL AM_MAINTAINER_MODE AC_CHECK_HEADERS(security/pam_modules.h) diff --git a/src/pam_rps.c b/src/pam_rps.c index 5a225de..9b8646e 100644 --- a/src/pam_rps.c +++ b/src/pam_rps.c @@ -79,39 +79,28 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) return PAM_CONV_ERR; } } - switch (r) { - case 0: - strcpy(prompt_text, values[0]); - want = values[1]; - break; - case 1: - strcpy(prompt_text, values[1]); - want = values[2]; - break; - case 2: - strcpy(prompt_text, values[2]); - want = values[0]; - break; - } + + strcpy(prompt_text, values[(r % 3)]); + want = values[((r + 1) % 3)]; if (debug) { pam_syslog(pamh, LOG_DEBUG, "challenge is \"%s\", " - "expected response is \"%s\"", prompt_text, want); + "expected response is \"%s\"", prompt_text, want); } - ret = pam_prompt(pamh, PAM_PROMPT_ECHO_OFF, &response, "%s: ", prompt_text); + ret = pam_prompt(pamh, PAM_PROMPT_ECHO_OFF, + &response, "%s: ", prompt_text); if (ret != PAM_SUCCESS) { pam_syslog(pamh, LOG_CRIT, "conversation error"); return PAM_CONV_ERR; } - if ((response != NULL) && - (strcasecmp(response, want) == 0)) { + if ((response != NULL) && (strcasecmp(response, want) == 0)) { ret = PAM_SUCCESS; } else { ret = PAM_AUTH_ERR; } - if (response) { - _pam_overwrite(response); - free(response); - } + if (response) { + _pam_overwrite(response); + free(response); + } return ret; } |