acl_read: Fix regression caused by db15fcfa899e1fe4d6994f68ceb299921b8aa6f1 for empty...
authorGarming Sam <garming@catalyst.net.nz>
Tue, 12 Mar 2019 21:52:19 +0000 (10:52 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 29 Mar 2019 18:37:29 +0000 (18:37 +0000)
The original code never dereferenced attrs and only added "*" if attrs
was NULL (not if attrs[0] was NULL).

This causes significant performance issues with the new paged_results
module introduced for 4.10 as the initial GUID search requests no
attributes. This GUID search turns into a search for "*" and ends up
allocating memory for the entire database.

This never appears to cause changes in the final result set, only
intermediate processing.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13836

Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Fri Mar 29 18:37:29 UTC 2019 on sn-devel-144

selftest/knownfail.d/dsdb [deleted file]
source4/dsdb/samdb/ldb_modules/acl_read.c

diff --git a/selftest/knownfail.d/dsdb b/selftest/knownfail.d/dsdb
deleted file mode 100644 (file)
index 7a3a314..0000000
+++ /dev/null
@@ -1 +0,0 @@
-samba4.dsdb.no_attrs
index 5a193e6d92592a399665c34bb077ecafaa031ffe..1e016b970ee458930c83b219ebf1ffccdd2669e5 100644 (file)
@@ -797,9 +797,6 @@ static int aclread_search(struct ldb_module *module, struct ldb_request *req)
        if (attrs == NULL) {
                all_attrs = true;
                attrs = _all_attrs;
-       } else if (attrs[0] == NULL) {
-               all_attrs = true;
-               attrs = _all_attrs;
        } else if (ldb_attr_in_list(attrs, "*")) {
                all_attrs = true;
        }