diff options
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/string_utils.c | 26 | ||||
-rw-r--r-- | src/util/util.h | 2 |
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 66b3e87db..7a668465e 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -540,7 +540,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__ */ |