summaryrefslogtreecommitdiffstats
path: root/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/util')
-rw-r--r--src/util/string_utils.c26
-rw-r--r--src/util/util.h2
2 files changed, 24 insertions, 4 deletions
diff --git a/src/util/string_utils.c b/src/util/string_utils.c
index ec4cc687e..a39b950e8 100644
--- a/src/util/string_utils.c
+++ b/src/util/string_utils.c
@@ -48,18 +48,38 @@ char * sss_replace_space(TALLOC_CTX *mem_ctx,
const char *orig_name,
const char subst)
{
- if (subst == '\0') {
+ if (subst == '\0' || subst == ' ') {
return talloc_strdup(mem_ctx, orig_name);
}
+
+ if (strchr(orig_name, subst) != NULL) {
+ DEBUG(SSSDBG_CRIT_FAILURE,
+ "Input [%s] already contains replacement character [%c].\n",
+ orig_name, subst);
+ sss_log(SSS_LOG_CRIT,
+ "Name [%s] already contains replacement character [%c]. " \
+ "No replacement will be done.\n",
+ orig_name, subst);
+ return talloc_strdup(mem_ctx, orig_name);
+ }
+
return replace_char(mem_ctx, orig_name, ' ', subst);
}
char * sss_reverse_replace_space(TALLOC_CTX *mem_ctx,
- char *orig_name,
+ const char *orig_name,
const char subst)
{
- if (subst == '\0') {
+ if (subst == '\0' || subst == ' ') {
return talloc_strdup(mem_ctx, orig_name);
}
+
+ if (strchr(orig_name, subst) != NULL && strchr(orig_name, ' ') != NULL) {
+ DEBUG(SSSDBG_TRACE_FUNC,
+ "Input [%s] contains replacement character [%c] and space.\n",
+ orig_name, subst);
+ return talloc_strdup(mem_ctx, orig_name);
+ }
+
return replace_char(mem_ctx, orig_name, subst, ' ');
}
diff --git a/src/util/util.h b/src/util/util.h
index ca740d016..d3b746be3 100644
--- a/src/util/util.h
+++ b/src/util/util.h
@@ -570,7 +570,7 @@ char * sss_replace_space(TALLOC_CTX *mem_ctx,
const char *orig_name,
const char replace_char);
char * sss_reverse_replace_space(TALLOC_CTX *mem_ctx,
- char *orig_name,
+ const char *orig_name,
const char replace_char);
#endif /* __SSSD_UTIL_H__ */