summaryrefslogtreecommitdiffstats
path: root/src/tools/sss_override.c
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2016-04-08 18:43:57 +0200
committerLukas Slebodnik <lslebodn@redhat.com>2016-04-13 13:15:06 +0200
commite45096aead1d2e2b8f8b2b386b420c5f62ad07d3 (patch)
tree893d08ed235e4b30682140a56926c5f6128a8ec9 /src/tools/sss_override.c
parent3a8b5ccf7c27b72054e1d8b3ab355cb1e28efda9 (diff)
downloadsssd-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.c28
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) {