diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2014-08-10 18:59:40 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-08-13 15:21:22 +0200 |
commit | 61cba55a3e44a937703a690254ccb3e0dd65dbb6 (patch) | |
tree | 2a96a5cfc68da27bf19b939244fc9563204ad99c /src/responder | |
parent | 5b4c81cab999c1f5a385754badd9e88600cbf3fa (diff) | |
download | sssd-61cba55a3e44a937703a690254ccb3e0dd65dbb6.tar.gz sssd-61cba55a3e44a937703a690254ccb3e0dd65dbb6.tar.xz sssd-61cba55a3e44a937703a690254ccb3e0dd65dbb6.zip |
Make the space override responder-agnostic
https://fedorahosted.org/sssd/ticket/2397
In order to make the override_space option usable by other responders,
we need to move the override_space option to the generic responder
structure.
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
(cherry picked from commit f3a5ac1a50c1fccd0801023658e42d2093e1a33a)
Diffstat (limited to 'src/responder')
-rw-r--r-- | src/responder/common/responder.h | 1 | ||||
-rw-r--r-- | src/responder/common/responder_common.c | 21 | ||||
-rw-r--r-- | src/responder/nss/nsssrv.c | 5 | ||||
-rw-r--r-- | src/responder/nss/nsssrv.h | 1 | ||||
-rw-r--r-- | src/responder/nss/nsssrv_cmd.c | 19 |
5 files changed, 34 insertions, 13 deletions
diff --git a/src/responder/common/responder.h b/src/responder/common/responder.h index c2440b132..8c7ad4fad 100644 --- a/src/responder/common/responder.h +++ b/src/responder/common/responder.h @@ -100,6 +100,7 @@ struct resp_ctx { uid_t *allowed_uids; char *default_domain; + char override_space; void *pvt_ctx; diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c index 2dd62ffcd..b51175bcc 100644 --- a/src/responder/common/responder_common.c +++ b/src/responder/common/responder_common.c @@ -780,6 +780,7 @@ int sss_process_init(TALLOC_CTX *mem_ctx, struct resp_ctx *rctx; struct sss_domain_info *dom; int ret; + char *tmp = NULL; rctx = talloc_zero(mem_ctx, struct resp_ctx); if (!rctx) { @@ -843,6 +844,26 @@ int sss_process_init(TALLOC_CTX *mem_ctx, goto fail; } + ret = confdb_get_string(rctx->cdb, rctx, CONFDB_MONITOR_CONF_ENTRY, + CONFDB_MONITOR_OVERRIDE_SPACE, NULL, + &tmp); + if (ret != EOK) { + DEBUG(SSSDBG_OP_FAILURE, + "Cannnot get the space substitution character [%d]: %s\n", + ret, strerror(ret)); + goto fail; + } + + if (tmp != NULL) { + if (strlen(tmp) > 1) { + DEBUG(SSSDBG_MINOR_FAILURE, "Option %s is longer than 1 character " + "only the first character %c will be used\n", + CONFDB_MONITOR_OVERRIDE_SPACE, tmp[0]); + } + + rctx->override_space = tmp[0]; + } + ret = sss_monitor_init(rctx, rctx->ev, monitor_intf, svc_name, svc_version, rctx, &rctx->mon_conn); diff --git a/src/responder/nss/nsssrv.c b/src/responder/nss/nsssrv.c index 5f58bf640..dba412a64 100644 --- a/src/responder/nss/nsssrv.c +++ b/src/responder/nss/nsssrv.c @@ -298,11 +298,6 @@ static int nss_get_config(struct nss_ctx *nctx, &nctx->homedir_substr); if (ret != EOK) goto done; - ret = confdb_get_string(cdb, nctx, CONFDB_NSS_CONF_ENTRY, - CONFDB_NSS_OVERRIDE_SPACE, NULL, - &nctx->override_space); - if (ret != EOK) goto done; - ret = 0; done: return ret; diff --git a/src/responder/nss/nsssrv.h b/src/responder/nss/nsssrv.h index 83eed37bf..0f0a75a8f 100644 --- a/src/responder/nss/nsssrv.h +++ b/src/responder/nss/nsssrv.h @@ -67,7 +67,6 @@ struct nss_ctx { char **etc_shells; char *shell_fallback; char *default_shell; - char *override_space; struct sss_mc_ctx *pwd_mc_ctx; struct sss_mc_ctx *grp_mc_ctx; diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index fa6536de1..2745c27d1 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -378,7 +378,8 @@ static int fill_pwent(struct sss_packet *packet, continue; } - tmpstr = sss_replace_space(tmp_ctx, tmpstr, nctx->override_space[0]); + tmpstr = sss_replace_space(tmp_ctx, tmpstr, + nctx->rctx->override_space); if (tmpstr == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "sss_replace_space failed, skipping\n"); @@ -766,7 +767,7 @@ static int nss_cmd_getpwnam_search(struct nss_dom_ctx *dctx) if (!name) return ENOMEM; name = sss_reverse_replace_space(dctx, name, - nctx->override_space[0]); + nctx->rctx->override_space); if (name == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "sss_reverse_replace_space failed\n"); @@ -2314,7 +2315,8 @@ static int fill_members(struct sss_packet *packet, continue; } - tmpstr = sss_replace_space(tmp_ctx, tmpstr, nctx->override_space[0]); + tmpstr = sss_replace_space(tmp_ctx, tmpstr, + nctx->rctx->override_space); if (tmpstr == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "sss_replace_space failed\n"); @@ -2497,7 +2499,8 @@ static int fill_grent(struct sss_packet *packet, continue; } - tmpstr = sss_replace_space(tmp_ctx, tmpstr, nctx->override_space[0]); + tmpstr = sss_replace_space(tmp_ctx, tmpstr, + nctx->rctx->override_space); if (tmpstr == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "sss_replace_space failed, skipping\n"); @@ -2707,7 +2710,8 @@ static int nss_cmd_getgrnam_search(struct nss_dom_ctx *dctx) name = sss_get_cased_name(dctx, cmdctx->name, dom->case_sensitive); if (!name) return ENOMEM; - name = sss_reverse_replace_space(dctx, name, nctx->override_space[0]); + name = sss_reverse_replace_space(dctx, name, + nctx->rctx->override_space); if (name == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "sss_reverse_replace_space failed\n"); @@ -3741,7 +3745,8 @@ static int nss_cmd_initgroups_search(struct nss_dom_ctx *dctx) name = sss_get_cased_name(dctx, cmdctx->name, dom->case_sensitive); if (!name) return ENOMEM; - name = sss_reverse_replace_space(dctx, name, nctx->override_space[0]); + name = sss_reverse_replace_space(dctx, name, + nctx->rctx->override_space); if (name == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "sss_reverse_replace_space failed\n"); @@ -3909,7 +3914,7 @@ static errno_t nss_cmd_getsidby_search(struct nss_dom_ctx *dctx) } name = sss_reverse_replace_space(dctx, name, - nctx->override_space[0]); + nctx->rctx->override_space); if (name == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "sss_reverse_replace_space failed\n"); |