summaryrefslogtreecommitdiffstats
path: root/src/responder
diff options
context:
space:
mode:
Diffstat (limited to 'src/responder')
-rw-r--r--src/responder/common/responder.h1
-rw-r--r--src/responder/common/responder_common.c21
-rw-r--r--src/responder/nss/nsssrv.c5
-rw-r--r--src/responder/nss/nsssrv.h1
-rw-r--r--src/responder/nss/nsssrv_cmd.c19
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");