summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/lib/ldb/modules/asq.c22
-rw-r--r--source4/libcli/ldap/ldap_controls.c2
-rwxr-xr-xsource4/script/tests/test_ldap.sh39
3 files changed, 56 insertions, 7 deletions
diff --git a/source4/lib/ldb/modules/asq.c b/source4/lib/ldb/modules/asq.c
index 5d4a5a3970..7e6bbdf29e 100644
--- a/source4/lib/ldb/modules/asq.c
+++ b/source4/lib/ldb/modules/asq.c
@@ -197,9 +197,29 @@ static int asq(struct ldb_module *module, struct ldb_request *req)
}
}
+static int asq_init_2(struct ldb_module *module)
+{
+ struct ldb_request request;
+ int ret;
+
+ request.operation = LDB_REQ_REGISTER;
+ request.op.reg.oid = LDB_CONTROL_ASQ_OID;
+ request.controls = NULL;
+
+ ret = ldb_request(module->ldb, &request);
+ if (ret != LDB_SUCCESS) {
+ ldb_debug(module->ldb, LDB_DEBUG_ERROR, "asq: Unable to register control with rootdse!\n");
+ return LDB_ERR_OTHER;
+ }
+
+ return ldb_next_second_stage_init(module);
+}
+
+
static const struct ldb_module_ops asq_ops = {
.name = "asq",
- .request = asq
+ .request = asq,
+ .second_stage_init = asq_init_2
};
struct ldb_module *asq_module_init(struct ldb_context *ldb, const char *options[])
diff --git a/source4/libcli/ldap/ldap_controls.c b/source4/libcli/ldap/ldap_controls.c
index cb7b52d423..e02efdee2c 100644
--- a/source4/libcli/ldap/ldap_controls.c
+++ b/source4/libcli/ldap/ldap_controls.c
@@ -304,7 +304,7 @@ static BOOL decode_asq_control(void *mem_ctx, DATA_BLOB in, void **out)
}
lac->src_attr_len = source_attribute.length;
if (lac->src_attr_len) {
- lac->source_attribute = talloc_memdup(lac, source_attribute.data, source_attribute.length);
+ lac->source_attribute = talloc_strndup(lac, source_attribute.data, source_attribute.length);
if (!(lac->source_attribute)) {
return False;
diff --git a/source4/script/tests/test_ldap.sh b/source4/script/tests/test_ldap.sh
index 37baaf9277..fc2b27028f 100755
--- a/source4/script/tests/test_ldap.sh
+++ b/source4/script/tests/test_ldap.sh
@@ -37,13 +37,42 @@ for p in $PROTOCOLS; do
testit "Listing Groups" bin/ldbsearch $options $CONFIGURATION -H $p://$SERVER '(objectclass=group)' sAMAccountName || failed=`expr $failed + 1`
- nusers=`bin/ldbsearch $options -H $p://$SERVER $CONFIGURATION '(|(|(&(!(groupType:1.2.840.113556.1.4.803:=1))(groupType:1.2.840.113556.1.4.803:=2147483648)(groupType:1.2.840.113556.1.4.804:=10))(samAccountType=805306368))(samAccountType=805306369))' sAMAccountName | grep sAMAccountName | wc -l`
- echo "Found $nusers users"
- if [ $nusers -lt 10 ]; then
- echo "Should have found at least 10 users"
+ nentries=`bin/ldbsearch $options -H $p://$SERVER $CONFIGURATION '(|(|(&(!(groupType:1.2.840.113556.1.4.803:=1))(groupType:1.2.840.113556.1.4.803:=2147483648)(groupType:1.2.840.113556.1.4.804:=10))(samAccountType=805306368))(samAccountType=805306369))' sAMAccountName | grep sAMAccountName | wc -l`
+ echo "Found $nentries entries"
+ if [ $nentries -lt 10 ]; then
+ echo "Should have found at least 10 entries"
failed=`expr $failed + 1`
fi
-done
+
+ echo "Test Paged Results Control"
+ nentries=`bin/ldbsearch $options $CONFIGURATION -H $p://$SERVER --controls=paged_results:1:5 '(objectclass=user)' | grep sAMAccountName | wc -l`
+ if [ $nentries -lt 1 ]; then
+ echo "Paged Results Control test returned 0 items"
+ failed=`expr $failed + 1`
+ fi
+
+ echo "Test Server Sort Control"
+ nentries=`bin/ldbsearch $options $CONFIGURATION -H $p://$SERVER --controls=server_sort:1:0:sAMAccountName '(objectclass=user)' | grep sAMAccountName | wc -l`
+ if [ $nentries -lt 1 ]; then
+ echo "Server Sort Control test returned 0 items"
+ failed=`expr $failed + 1`
+ fi
+
+ echo "Test Extended DN Control"
+ nentries=`bin/ldbsearch $options $CONFIGURATION -H $p://$SERVER --controls=extended_dn:1:0 '(objectclass=user)' | grep sAMAccountName | wc -l`
+ if [ $nentries -lt 1 ]; then
+ echo "Extended DN Control test returned 0 items"
+ failed=`expr $failed + 1`
+ fi
+
+ echo "Test Attribute Scope Query Control"
+ nentries=`bin/ldbsearch $options $CONFIGURATION -H $p://$SERVER --controls=asq:1:member -s base -b 'CN=Administrators,CN=Builtin,DC=samba,DC=example,DC=com' | grep sAMAccountName | wc -l`
+ if [ $nentries -lt 1 ]; then
+ echo "Attribute Scope Query test returned 0 items"
+ failed=`expr $failed + 1`
+ fi
+
+ done
done
testit "CLDAP" bin/smbtorture $TORTURE_OPTIONS //$SERVER/_none_ LDAP-CLDAP || failed=`expr $failed + 1`