summaryrefslogtreecommitdiffstats
path: root/src/sss_client
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2016-02-26 16:06:50 +0100
committerLukas Slebodnik <lslebodn@redhat.com>2016-03-11 11:46:11 +0100
commita452d199bc125e8d53033d7c00383b4a275ab85e (patch)
tree66406fb10614de07970505406cc6c3d37757d86d /src/sss_client
parentc6bda70d6131b5e8cd760ad690fae001d1765547 (diff)
downloadsssd-a452d199bc125e8d53033d7c00383b4a275ab85e.tar.gz
sssd-a452d199bc125e8d53033d7c00383b4a275ab85e.tar.xz
sssd-a452d199bc125e8d53033d7c00383b4a275ab85e.zip
CLIENT: Reduce code duplication
Patch for #2626 will be simpler with this small refactoring Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/sss_client')
-rw-r--r--src/sss_client/common.c58
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);
}