summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@redhat.com>2010-04-20 18:23:59 -0400
committerNalin Dahyabhai <nalin@redhat.com>2010-04-20 18:23:59 -0400
commita971ed942e65f9c3cadef5221dc9e524cf54d8e0 (patch)
treea8b348f26f751fa62b20764e381749e757e25280
parent97e8d97a1f6fd6cba72753d2809ddda277544592 (diff)
downloadpam_rps-a971ed942e65f9c3cadef5221dc9e524cf54d8e0.tar.gz
pam_rps-a971ed942e65f9c3cadef5221dc9e524cf54d8e0.tar.xz
pam_rps-a971ed942e65f9c3cadef5221dc9e524cf54d8e0.zip
- simplify logic for choosing choices
-rw-r--r--configure.ac3
-rw-r--r--src/pam_rps.c33
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;
}