URL: https://github.com/SSSD/sssd/pull/326
Author: amitkumar50
 Title: #326: IPA: check if IPA hostname is a FQDN
Action: synchronized

To pull the PR as Git branch:
git remote add ghsssd https://github.com/SSSD/sssd
git fetch ghsssd pull/326/head:pr326
git checkout pr326
From 066d723adee0a142107914ec64b001a9571e7f9c Mon Sep 17 00:00:00 2001
From: AmitKumar <amitk...@redhat.com>
Date: Wed, 19 Jul 2017 22:14:24 +0530
Subject: [PATCH 1/2] IPA: check if IPA hostname is a FQDN

Some users change the IPA hostname post-install which results in strange bugs. Code change make sure that the ipa_hostname contains at least one domain component.

Resolves: https://pagure.io/SSSD/sssd/issue/1946
---
 src/providers/ipa/ipa_access.c |  6 ++++++
 src/providers/ipa/ipa_common.c | 16 ++++++++++++++++
 src/providers/ipa/ipa_common.h |  1 +
 3 files changed, 23 insertions(+)

diff --git a/src/providers/ipa/ipa_access.c b/src/providers/ipa/ipa_access.c
index 9682613e9..12c570b3f 100644
--- a/src/providers/ipa/ipa_access.c
+++ b/src/providers/ipa/ipa_access.c
@@ -355,6 +355,12 @@ static void ipa_fetch_hbac_services_done(struct tevent_req *subreq)
         ret = EINVAL;
         goto done;
     }
+    if(!ipa_check_fqdn(ipa_hostname)){
+        DEBUG(SSSDBG_CRIT_FAILURE,
+            "ipa_hostname is not Fully Qualified Domain Name.\n");
+        ret = ERR_WRONG_NAME_FORMAT;
+        goto done;
+    }
 
     for (i = 0; i < state->host_count; i++) {
         ret = sysdb_attrs_get_string(state->hosts[i], SYSDB_FQDN, &hostname);
diff --git a/src/providers/ipa/ipa_common.c b/src/providers/ipa/ipa_common.c
index 657994508..f27f81e8a 100644
--- a/src/providers/ipa/ipa_common.c
+++ b/src/providers/ipa/ipa_common.c
@@ -37,6 +37,16 @@
 
 #include "providers/ipa/ipa_opts.h"
 
+bool ipa_check_fqdn(const char *str){
+    const char ch = '.';
+    char *ret;
+    ret = strchr(str, ch);
+    if(ret){
+        return true;
+    }
+    return false;
+}
+
 int ipa_get_options(TALLOC_CTX *memctx,
                     struct confdb_ctx *cdb,
                     const char *conf_path,
@@ -93,6 +103,12 @@ int ipa_get_options(TALLOC_CTX *memctx,
             goto done;
         }
     }
+    if(!ipa_check_fqdn(ipa_hostname)){
+        DEBUG(SSSDBG_CRIT_FAILURE,
+            "ipa_hostname is not Fully Qualified Domain Name.\n");
+        ret = ERR_WRONG_NAME_FORMAT;
+        goto done;
+    }
 
     /* First check whether the realm has been manually specified */
     realm = dp_opt_get_string(opts->basic, IPA_KRB5_REALM);
diff --git a/src/providers/ipa/ipa_common.h b/src/providers/ipa/ipa_common.h
index add9df876..f9a2390b9 100644
--- a/src/providers/ipa/ipa_common.h
+++ b/src/providers/ipa/ipa_common.h
@@ -290,6 +290,7 @@ errno_t ipa_idmap_init(TALLOC_CTX *mem_ctx,
                        struct sdap_id_ctx *id_ctx,
                        struct sdap_idmap_ctx **_idmap_ctx);
 
+bool ipa_check_fqdn(const char *str);
 
 struct krb5_ctx *ipa_init_get_krb5_auth_ctx(void *data);
 #endif /* _IPA_COMMON_H_ */

From dd425e53b80281fb3f73649744ee4a190b722ad8 Mon Sep 17 00:00:00 2001
From: AmitKumar <amitk...@redhat.com>
Date: Mon, 31 Jul 2017 20:41:19 +0530
Subject: [PATCH 2/2] IPA: check if IPA hostname is a FQDN

Some users change the IPA hostname post-install which results in
strange bugs. Code change make sure that the ipa_hostname contains
at least one domain component.

Resolves:
https://pagure.io/SSSD/sssd/issue/1946
---
 src/providers/ipa/ipa_access.c |  6 ------
 src/providers/ipa/ipa_common.c | 16 ----------------
 src/providers/ipa/ipa_common.h |  2 --
 src/providers/ipa/ipa_init.c   | 17 +++++++++++++++++
 4 files changed, 17 insertions(+), 24 deletions(-)

diff --git a/src/providers/ipa/ipa_access.c b/src/providers/ipa/ipa_access.c
index 12c570b3f..9682613e9 100644
--- a/src/providers/ipa/ipa_access.c
+++ b/src/providers/ipa/ipa_access.c
@@ -355,12 +355,6 @@ static void ipa_fetch_hbac_services_done(struct tevent_req *subreq)
         ret = EINVAL;
         goto done;
     }
-    if(!ipa_check_fqdn(ipa_hostname)){
-        DEBUG(SSSDBG_CRIT_FAILURE,
-            "ipa_hostname is not Fully Qualified Domain Name.\n");
-        ret = ERR_WRONG_NAME_FORMAT;
-        goto done;
-    }
 
     for (i = 0; i < state->host_count; i++) {
         ret = sysdb_attrs_get_string(state->hosts[i], SYSDB_FQDN, &hostname);
diff --git a/src/providers/ipa/ipa_common.c b/src/providers/ipa/ipa_common.c
index f27f81e8a..657994508 100644
--- a/src/providers/ipa/ipa_common.c
+++ b/src/providers/ipa/ipa_common.c
@@ -37,16 +37,6 @@
 
 #include "providers/ipa/ipa_opts.h"
 
-bool ipa_check_fqdn(const char *str){
-    const char ch = '.';
-    char *ret;
-    ret = strchr(str, ch);
-    if(ret){
-        return true;
-    }
-    return false;
-}
-
 int ipa_get_options(TALLOC_CTX *memctx,
                     struct confdb_ctx *cdb,
                     const char *conf_path,
@@ -103,12 +93,6 @@ int ipa_get_options(TALLOC_CTX *memctx,
             goto done;
         }
     }
-    if(!ipa_check_fqdn(ipa_hostname)){
-        DEBUG(SSSDBG_CRIT_FAILURE,
-            "ipa_hostname is not Fully Qualified Domain Name.\n");
-        ret = ERR_WRONG_NAME_FORMAT;
-        goto done;
-    }
 
     /* First check whether the realm has been manually specified */
     realm = dp_opt_get_string(opts->basic, IPA_KRB5_REALM);
diff --git a/src/providers/ipa/ipa_common.h b/src/providers/ipa/ipa_common.h
index f9a2390b9..8b34c2f75 100644
--- a/src/providers/ipa/ipa_common.h
+++ b/src/providers/ipa/ipa_common.h
@@ -290,7 +290,5 @@ errno_t ipa_idmap_init(TALLOC_CTX *mem_ctx,
                        struct sdap_id_ctx *id_ctx,
                        struct sdap_idmap_ctx **_idmap_ctx);
 
-bool ipa_check_fqdn(const char *str);
-
 struct krb5_ctx *ipa_init_get_krb5_auth_ctx(void *data);
 #endif /* _IPA_COMMON_H_ */
diff --git a/src/providers/ipa/ipa_init.c b/src/providers/ipa/ipa_init.c
index 7dec4d1fb..7726d52ab 100644
--- a/src/providers/ipa/ipa_init.c
+++ b/src/providers/ipa/ipa_init.c
@@ -231,6 +231,17 @@ static errno_t ipa_init_dyndns(struct be_ctx *be_ctx,
     return EOK;
 }
 
+static bool ipa_check_fqdn(const char *str)
+{
+    const char ch = '.';
+    char *ret;
+    ret = strchr(str, ch);
+    if (ret != NULL) {
+        return true;
+    }
+    return false;
+}
+
 static errno_t ipa_init_server_mode(struct be_ctx *be_ctx,
                                     struct ipa_options *ipa_options,
                                     struct ipa_id_ctx *ipa_id_ctx)
@@ -258,6 +269,12 @@ static errno_t ipa_init_server_mode(struct be_ctx *be_ctx,
     sites_enabled = dp_opt_get_bool(ipa_options->basic, IPA_ENABLE_DNS_SITES);
     dnsdomain = dp_opt_get_string(be_ctx->be_res->opts, DP_RES_OPT_DNS_DOMAIN);
 
+    if (!ipa_check_fqdn(hostname)) {
+        DEBUG(SSSDBG_CRIT_FAILURE,
+              "ipa_hostname is not Fully Qualified Domain Name.\n");
+        return EFAULT;
+    }
+
     if (srv_in_server_list(ipa_servers) || sites_enabled) {
         DEBUG(SSSDBG_MINOR_FAILURE, "SRV resolution or IPA sites enabled "
               "on the IPA server. Site discovery of trusted AD servers "
_______________________________________________
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org

Reply via email to