summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWalter de Jong <walter.dejong@surfsara.nl>2014-02-19 13:51:37 +0100
committerWalter de Jong <walter.dejong@surfsara.nl>2014-02-19 13:55:22 +0100
commitcd79e4d89b8abfe399cddac9e8f53c7602efce77 (patch)
treeaffe8666d556bffab6e160709d32401ef123c553
parent4178529c0e42939774f4fa6099f0de586bfe27e5 (diff)
downloadpam_tacplus-cd79e4d89b8abfe399cddac9e8f53c7602efce77.tar.gz
pam_tacplus-cd79e4d89b8abfe399cddac9e8f53c7602efce77.zip
cleanup redundant code
-rw-r--r--pam_tacplus.c97
1 files changed, 28 insertions, 69 deletions
diff --git a/pam_tacplus.c b/pam_tacplus.c
index 914bdb8..3c8074f 100644
--- a/pam_tacplus.c
+++ b/pam_tacplus.c
@@ -118,15 +118,16 @@ int _pam_account(pam_handle_t *pamh, int argc, const char **argv,
char *r_addr = NULL;
char *typemsg;
int status = PAM_SESSION_ERR;
+ int srv_i, tac_fd;
typemsg = tac_acct_flag2str(type);
ctrl = _pam_parse (argc, argv);
- if (ctrl & PAM_TAC_DEBUG)
- syslog (LOG_DEBUG, "%s: [%s] called (pam_tacplus v%u.%u.%u)"
- , __FUNCTION__, typemsg, PAM_TAC_VMAJ, PAM_TAC_VMIN, PAM_TAC_VPAT);
- if (ctrl & PAM_TAC_DEBUG)
+ if (ctrl & PAM_TAC_DEBUG) {
+ syslog (LOG_DEBUG, "%s: [%s] called (pam_tacplus v%u.%u.%u)",
+ __FUNCTION__, typemsg, PAM_TAC_VMAJ, PAM_TAC_VMIN, PAM_TAC_VPAT);
syslog(LOG_DEBUG, "%s: tac_srv_no=%d", __FUNCTION__, tac_srv_no);
+ }
if ((user = _pam_get_user(pamh)) == NULL)
return PAM_USER_UNKNOWN;
@@ -166,77 +167,35 @@ int _pam_account(pam_handle_t *pamh, int argc, const char **argv,
signal(SIGHUP, SIG_IGN);
}
- if(!(ctrl & PAM_TAC_ACCT)) {
- /* normal mode, send packet to the first available server */
- int srv_i = 0;
-
- status = PAM_SESSION_ERR;
- while ((status == PAM_SESSION_ERR) && (srv_i < tac_srv_no)) {
- int tac_fd;
-
- tac_fd = tac_connect_single(tac_srv[srv_i].addr, tac_srv[srv_i].key);
- if(tac_fd < 0) {
- _pam_log(LOG_WARNING, "%s: error sending %s (fd)",
- __FUNCTION__, typemsg);
- srv_i++;
- continue;
- }
+ status = PAM_SESSION_ERR;
+ for(srv_i = 0; srv_i < tac_srv_no; srv_i++) {
+ tac_fd = tac_connect_single(tac_srv[srv_i].addr, tac_srv[srv_i].key);
+ if (tac_fd < 0) {
+ _pam_log(LOG_WARNING, "%s: error sending %s (fd)",
+ __FUNCTION__, typemsg);
+ continue;
+ }
+ if (ctrl & PAM_TAC_DEBUG)
+ syslog(LOG_DEBUG, "%s: connected with fd=%d (srv %d)", __FUNCTION__, tac_fd, srv_i);
+ retval = _pam_send_account(tac_fd, type, user, tty, r_addr, cmd);
+ if (retval < 0) {
+ _pam_log(LOG_WARNING, "%s: error sending %s (acct)",
+ __FUNCTION__, typemsg);
+ } else {
+ status = PAM_SUCCESS;
if (ctrl & PAM_TAC_DEBUG)
- syslog(LOG_DEBUG, "%s: connected with fd=%d (srv %d)", __FUNCTION__, tac_fd, srv_i);
-
- retval = _pam_send_account(tac_fd, type, user, tty, r_addr, cmd);
- /* return code from function in this mode is
- status of the last server we tried to send
- packet to */
- if(retval < 0) {
- _pam_log(LOG_WARNING, "%s: error sending %s (acct)",
- __FUNCTION__, typemsg);
- } else {
- status = PAM_SUCCESS;
- if (ctrl & PAM_TAC_DEBUG)
- syslog(LOG_DEBUG, "%s: [%s] for [%s] sent",
- __FUNCTION__, typemsg,user);
- }
- close(tac_fd);
- srv_i++;
+ syslog(LOG_DEBUG, "%s: [%s] for [%s] sent", __FUNCTION__, typemsg, user);
}
- } else {
- /* send packet to all servers specified */
- int srv_i;
-
- status = PAM_SESSION_ERR;
- for(srv_i = 0; srv_i < tac_srv_no; srv_i++) {
- int tac_fd;
-
- tac_fd = tac_connect_single(tac_srv[srv_i].addr, tac_srv[srv_i].key);
- if(tac_fd < 0) {
- _pam_log(LOG_WARNING, "%s: error sending %s (fd)",
- __FUNCTION__, typemsg);
- continue;
- }
+ close(tac_fd);
- if (ctrl & PAM_TAC_DEBUG)
- syslog(LOG_DEBUG, "%s: connected with fd=%d (srv %d)", __FUNCTION__, tac_fd, srv_i);
-
- retval = _pam_send_account(tac_fd, type, user, tty, r_addr, cmd);
- /* return code from function in this mode is
- status of the last server we tried to send
- packet to */
- if(retval < 0) {
- _pam_log(LOG_WARNING, "%s: error sending %s (acct)",
- __FUNCTION__, typemsg);
- } else {
- status = PAM_SUCCESS;
- if (ctrl & PAM_TAC_DEBUG)
- syslog(LOG_DEBUG, "%s: [%s] for [%s] sent",
- __FUNCTION__, typemsg,user);
- }
- close(tac_fd);
+ if ((status == PAM_SUCCESS) && !(ctrl & PAM_TAC_ACCT)) {
+ /* do not send acct start/stop packets to _all_ servers */
+ break;
}
- } /* acct mode */
+ }
- if(type == TAC_PLUS_ACCT_FLAG_STOP) {
+ if (type == TAC_PLUS_ACCT_FLAG_STOP) {
signal(SIGALRM, SIG_DFL);
signal(SIGCHLD, SIG_DFL);
signal(SIGHUP, SIG_DFL);