diff options
author | Sumit Bose <sbose@redhat.com> | 2016-04-08 18:43:57 +0200 |
---|---|---|
committer | Lukas Slebodnik <lslebodn@redhat.com> | 2016-04-13 13:15:06 +0200 |
commit | e45096aead1d2e2b8f8b2b386b420c5f62ad07d3 (patch) | |
tree | 893d08ed235e4b30682140a56926c5f6128a8ec9 /src/tools/sss_override.c | |
parent | 3a8b5ccf7c27b72054e1d8b3ab355cb1e28efda9 (diff) | |
download | sssd-e45096aead1d2e2b8f8b2b386b420c5f62ad07d3.tar.gz sssd-e45096aead1d2e2b8f8b2b386b420c5f62ad07d3.tar.xz sssd-e45096aead1d2e2b8f8b2b386b420c5f62ad07d3.zip |
sss_override: only add domain if name is not fully qualified
Resolves:
https://fedorahosted.org/sssd/ticket/2989
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Diffstat (limited to 'src/tools/sss_override.c')
-rw-r--r-- | src/tools/sss_override.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/tools/sss_override.c b/src/tools/sss_override.c index c8d3e55c1..7e63bdf6e 100644 --- a/src/tools/sss_override.c +++ b/src/tools/sss_override.c @@ -379,11 +379,37 @@ static char *get_fqname(TALLOC_CTX *mem_ctx, char *fqname; int fqlen; int check; + char *dummy_domain = NULL; + int ret; - if (domain == NULL) { + if (domain == NULL || domain->names == NULL) { + return NULL; + } + + /* check if the name already contains domain part */ + ret = sss_parse_name(mem_ctx, domain->names, name, &dummy_domain, NULL); + if (ret == ERR_REGEX_NOMATCH) { + DEBUG(SSSDBG_TRACE_FUNC, + "sss_parse_name could not parse domain from [%s]. " + "Assuming it is not FQDN.\n", name); + } else if (ret != EOK) { + DEBUG(SSSDBG_TRACE_FUNC, + "sss_parse_name failed [%d]: %s\n", ret, sss_strerror(ret)); return NULL; } + if (dummy_domain != NULL) { + talloc_free(dummy_domain); + DEBUG(SSSDBG_TRACE_FUNC, "Name is already fully qualified.\n"); + fqname = talloc_strdup(mem_ctx, name); + if (fqname == NULL) { + DEBUG(SSSDBG_CRIT_FAILURE, "talloc_strdup failed.\n"); + return NULL; + } + + return fqname; + } + /* Get length. */ fqlen = sss_fqname(NULL, 0, domain->names, domain, name); if (fqlen > 0) { |