From a452d199bc125e8d53033d7c00383b4a275ab85e Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Fri, 26 Feb 2016 16:06:50 +0100 Subject: CLIENT: Reduce code duplication Patch for #2626 will be simpler with this small refactoring Reviewed-by: Jakub Hrozek --- src/sss_client/common.c | 58 +++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/src/sss_client/common.c b/src/sss_client/common.c index 0d9106a0..827f0c2a 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); } -- cgit