diff options
| author | Walter de Jong <walter.dejong@surfsara.nl> | 2014-02-19 13:51:37 +0100 |
|---|---|---|
| committer | Walter de Jong <walter.dejong@surfsara.nl> | 2014-02-19 13:55:22 +0100 |
| commit | cd79e4d89b8abfe399cddac9e8f53c7602efce77 (patch) | |
| tree | affe8666d556bffab6e160709d32401ef123c553 | |
| parent | 4178529c0e42939774f4fa6099f0de586bfe27e5 (diff) | |
| download | pam_tacplus-cd79e4d89b8abfe399cddac9e8f53c7602efce77.tar.gz pam_tacplus-cd79e4d89b8abfe399cddac9e8f53c7602efce77.zip | |
cleanup redundant code
| -rw-r--r-- | pam_tacplus.c | 97 |
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); |
