summaryrefslogtreecommitdiffstats
path: root/src/providers/ldap/sdap_range.c
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2013-05-14 18:00:10 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-08-09 15:04:43 +0200
commit0b9e98122091c5bb6232ea4746decb6fbe2d68c0 (patch)
treeeba8755e80ab04a315a0385d4cea46fac079ebbe /src/providers/ldap/sdap_range.c
parent6ed0eb3bf1b322a246aad6c3e02a7c3b4619d867 (diff)
downloadsssd-0b9e98122091c5bb6232ea4746decb6fbe2d68c0.tar.gz
sssd-0b9e98122091c5bb6232ea4746decb6fbe2d68c0.tar.xz
sssd-0b9e98122091c5bb6232ea4746decb6fbe2d68c0.zip
Adding option to disable retrieving large AD groups.sssd-1.9.2-113.el6
This commit adds new option ldap_disable_range_retrieval with default value FALSE. If this option is enabled, large groups(>1500) will not be retrieved and behaviour will be similar like was before commit ae8d047122c "LDAP: Handle very large Active Directory groups" https://fedorahosted.org/sssd/ticket/1823
Diffstat (limited to 'src/providers/ldap/sdap_range.c')
-rw-r--r--src/providers/ldap/sdap_range.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/providers/ldap/sdap_range.c b/src/providers/ldap/sdap_range.c
index a26443c82..c4bf43539 100644
--- a/src/providers/ldap/sdap_range.c
+++ b/src/providers/ldap/sdap_range.c
@@ -29,7 +29,8 @@
errno_t sdap_parse_range(TALLOC_CTX *mem_ctx,
const char *attr_desc,
char **base_attr,
- uint32_t *range_offset)
+ uint32_t *range_offset,
+ bool disable_range_retrieval)
{
errno_t ret;
TALLOC_CTX *tmp_ctx;
@@ -84,6 +85,16 @@ errno_t sdap_parse_range(TALLOC_CTX *mem_ctx,
("[%s] contains sub-attribute other than a range, returning whole\n",
attr_desc));
goto done;
+ } else if (disable_range_retrieval) {
+ /* This is range sub-attribute, but we want to ignore it.
+ */
+ *base_attr = talloc_strdup(mem_ctx, attr_desc);
+ if (!*base_attr) {
+ ret = ENOMEM;
+ } else {
+ ret = ECANCELED;
+ }
+ goto done;
}
/* Get the end of the range */