diff options
Diffstat (limited to 'src/sss_client')
-rw-r--r-- | src/sss_client/common.c | 58 |
1 files changed, 27 insertions, 31 deletions
diff --git a/src/sss_client/common.c b/src/sss_client/common.c index 0d9106a04..827f0c2ac 100644 --- a/src/sss_client/common.c +++ b/src/sss_client/common.c @@ -829,6 +829,7 @@ int sss_pam_make_request(enum sss_cli_command cmd, enum sss_status status; char *envval; struct stat stat_buf; + const char *socket_name; sss_pam_lock(); @@ -841,7 +842,8 @@ int sss_pam_make_request(enum sss_cli_command cmd, /* only root shall use the privileged pipe */ if (getuid() == 0 && getgid() == 0) { - statret = stat(SSS_PAM_PRIV_SOCKET_NAME, &stat_buf); + socket_name = SSS_PAM_PRIV_SOCKET_NAME; + statret = stat(socket_name, &stat_buf); if (statret != 0) { ret = PAM_SERVICE_ERR; goto out; @@ -854,10 +856,9 @@ int sss_pam_make_request(enum sss_cli_command cmd, ret = PAM_SERVICE_ERR; goto out; } - - status = sss_cli_check_socket(errnop, SSS_PAM_PRIV_SOCKET_NAME); } else { - statret = stat(SSS_PAM_SOCKET_NAME, &stat_buf); + socket_name = SSS_PAM_SOCKET_NAME; + statret = stat(socket_name, &stat_buf); if (statret != 0) { ret = PAM_SERVICE_ERR; goto out; @@ -870,9 +871,9 @@ int sss_pam_make_request(enum sss_cli_command cmd, ret = PAM_SERVICE_ERR; goto out; } - - status = sss_cli_check_socket(errnop, SSS_PAM_SOCKET_NAME); } + + status = sss_cli_check_socket(errnop, socket_name); if (status != SSS_STATUS_SUCCESS) { ret = PAM_SERVICE_ERR; goto out; @@ -910,14 +911,16 @@ void sss_pam_close_fd(void) sss_pam_unlock(); } -int sss_sudo_make_request(enum sss_cli_command cmd, - struct sss_cli_req_data *rd, - uint8_t **repbuf, size_t *replen, - int *errnop) +static enum sss_status +sss_cli_make_request_with_checks(enum sss_cli_command cmd, + struct sss_cli_req_data *rd, + uint8_t **repbuf, size_t *replen, + int *errnop, + const char *socket_name) { enum sss_status ret = SSS_STATUS_UNAVAIL; - ret = sss_cli_check_socket(errnop, SSS_SUDO_SOCKET_NAME); + ret = sss_cli_check_socket(errnop, socket_name); if (ret != SSS_STATUS_SUCCESS) { return SSS_STATUS_UNAVAIL; } @@ -927,21 +930,22 @@ int sss_sudo_make_request(enum sss_cli_command cmd, return ret; } +int sss_sudo_make_request(enum sss_cli_command cmd, + struct sss_cli_req_data *rd, + uint8_t **repbuf, size_t *replen, + int *errnop) +{ + return sss_cli_make_request_with_checks(cmd, rd, repbuf, replen, errnop, + SSS_SUDO_SOCKET_NAME); +} + int sss_autofs_make_request(enum sss_cli_command cmd, struct sss_cli_req_data *rd, uint8_t **repbuf, size_t *replen, int *errnop) { - enum sss_status ret = SSS_STATUS_UNAVAIL; - - ret = sss_cli_check_socket(errnop, SSS_AUTOFS_SOCKET_NAME); - if (ret != SSS_STATUS_SUCCESS) { - return SSS_STATUS_UNAVAIL; - } - - ret = sss_cli_make_request_nochecks(cmd, rd, repbuf, replen, errnop); - - return ret; + return sss_cli_make_request_with_checks(cmd, rd, repbuf, replen, errnop, + SSS_AUTOFS_SOCKET_NAME); } int sss_ssh_make_request(enum sss_cli_command cmd, @@ -949,16 +953,8 @@ int sss_ssh_make_request(enum sss_cli_command cmd, uint8_t **repbuf, size_t *replen, int *errnop) { - enum sss_status ret = SSS_STATUS_UNAVAIL; - - ret = sss_cli_check_socket(errnop, SSS_SSH_SOCKET_NAME); - if (ret != SSS_STATUS_SUCCESS) { - return SSS_STATUS_UNAVAIL; - } - - ret = sss_cli_make_request_nochecks(cmd, rd, repbuf, replen, errnop); - - return ret; + return sss_cli_make_request_with_checks(cmd, rd, repbuf, replen, errnop, + SSS_SSH_SOCKET_NAME); } |