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)
committerKarolin Seeger <kseeger@samba.org>
Tue, 2 Apr 2019 09:10:54 +0000 (09:10 +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

(cherry picked from commit a2b1970a37836e46d6c9eb6bda9bd20185de96ce)

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 6ab4780a19649dbabed0a9c55284139d60ab5956..9d93f6714206d9ec4437bb7abc9d1d0ae30c2fc9 100644 (file)
@@ -796,9 +796,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;
        }