summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/sssd/sssd_domains.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/sssd/sssd_domains.c b/src/sssd/sssd_domains.c
index 3f8d418..a226e27 100644
--- a/src/sssd/sssd_domains.c
+++ b/src/sssd/sssd_domains.c
@@ -57,14 +57,6 @@ sssd_domain_get_attrs(sss_sifp_attr **attrs,
error = sss_sifp_find_attr_as_string(attrs, "provider", &out->provider);
check_sss_sifp_error(error, ret, SSSD_METHOD_ERROR_FAILED, done);
- error = sss_sifp_find_attr_as_string_array(attrs, "primary_servers",
- &out->num_primary, &out->primary_servers);
- check_sss_sifp_error(error, ret, SSSD_METHOD_ERROR_FAILED, done);
-
- error = sss_sifp_find_attr_as_string_array(attrs, "backup_servers",
- &out->num_backup, &out->backup_servers);
- check_sss_sifp_error(error, ret, SSSD_METHOD_ERROR_FAILED, done);
-
error = sss_sifp_find_attr_as_uint32(attrs, "min_id", &out->min_id);
check_sss_sifp_error(error, ret, SSSD_METHOD_ERROR_FAILED, done);
@@ -99,6 +91,21 @@ sssd_domain_get_attrs(sss_sifp_attr **attrs,
&out->parent_domain);
check_sss_sifp_error(error, ret, SSSD_METHOD_ERROR_FAILED, done);
+ /* server list may be empty */
+ error = sss_sifp_find_attr_as_string_array(attrs, "primary_servers",
+ &out->num_primary, &out->primary_servers);
+ if (error != SSS_SIFP_OK && error != SSS_SIFP_ATTR_NULL) {
+ ret = SSSD_METHOD_ERROR_FAILED;
+ goto done;
+ }
+
+ error = sss_sifp_find_attr_as_string_array(attrs, "backup_servers",
+ &out->num_backup, &out->backup_servers);
+ if (error != SSS_SIFP_OK && error != SSS_SIFP_ATTR_NULL) {
+ ret = SSSD_METHOD_ERROR_FAILED;
+ goto done;
+ }
+
ret = SSSD_METHOD_ERROR_OK;
done: