diff options
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/usertools.c | 35 | ||||
-rw-r--r-- | src/util/util.h | 3 |
2 files changed, 38 insertions, 0 deletions
diff --git a/src/util/usertools.c b/src/util/usertools.c index 9be4f81ec..81b729d5c 100644 --- a/src/util/usertools.c +++ b/src/util/usertools.c @@ -794,3 +794,38 @@ done: talloc_free(tmp_ctx); return fqname; } + +char *sss_ioname2internal(TALLOC_CTX *mem_ctx, + struct sss_domain_info *dom, + char *ioname) +{ + char *shortname; + char *domname; + char *_name = NULL; + TALLOC_CTX *tmp_ctx; + errno_t ret; + + tmp_ctx = talloc_new(NULL); + if (tmp_ctx == NULL) { + return NULL; + } + + ret = sss_parse_name(tmp_ctx, dom->names, ioname, &domname, &shortname); + if (ret != EOK) { + DEBUG(SSSDBG_OP_FAILURE, "sss_parse_name failed [%d]: %s\n", + ret, sss_strerror(ret)); + goto done; + } + + _name = sss_create_internal_fqname(mem_ctx, shortname, + domname ? domname : dom->name); + if (_name == NULL) { + DEBUG(SSSDBG_OP_FAILURE, + "Failed to format group name.\n"); + goto done; + } + +done: + talloc_free(tmp_ctx); + return _name; +} diff --git a/src/util/util.h b/src/util/util.h index f7d60b2ec..25935f2fd 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -321,6 +321,9 @@ int sss_parse_name_for_domains(TALLOC_CTX *memctx, const char *default_domain, const char *orig, char **domain, char **name); +char *sss_ioname2internal(TALLOC_CTX *mem_ctx, + struct sss_domain_info *dom, + char *ioname); char * sss_get_cased_name(TALLOC_CTX *mem_ctx, const char *orig_name, bool case_sensitive); |