From a971ed942e65f9c3cadef5221dc9e524cf54d8e0 Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Tue, 20 Apr 2010 18:23:59 -0400 Subject: - simplify logic for choosing choices --- configure.ac | 3 +++ 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; } -- cgit