[SCM] Samba Shared Repository - branch v4-0-test updated - release-4-0-0alpha4-102-g5fb5a4e

Andrew Bartlett abartlet at samba.org
Thu Jun 19 08:06:53 GMT 2008


The branch, v4-0-test has been updated
       via  5fb5a4e13db3a03da414876efa717c3de44ca77c (commit)
       via  33789111241a1d97fc105ec4edd7b8054895b28c (commit)
       via  60c93b9777d9bd7dce89f9024ba767f5404ac72d (commit)
       via  d96a6482dad54d1d27a87107865e833a9c32cf53 (commit)
       via  e28481fc0976231c6f4cb7a5f7c7708f4becdb18 (commit)
      from  09cf8c7dd82bb95e2f8782782286869654d96375 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test


- Log -----------------------------------------------------------------
commit 5fb5a4e13db3a03da414876efa717c3de44ca77c
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jun 19 18:06:35 2008 +1000

    Change detection of objectCategory short fomm
    
    To actually validate the DN, we load and call the validation fucntion,
    not just check the 'ldb_dn_is_valid()' function.
    
    Andrew Bartlett

commit 33789111241a1d97fc105ec4edd7b8054895b28c
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jun 19 17:59:57 2008 +1000

    Fix segfault caused by talloc_free() being called while still processing
    
    The problem here was that with the packet code set to serialise, we
    can have multiple packets 'processing' at once, and previously the
    second packet (allowed because we are spining on an event context down
    the stack) would clear the flag.
    
    Andrew Bartlett

commit 60c93b9777d9bd7dce89f9024ba767f5404ac72d
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jun 19 14:53:14 2008 +1000

    Remove old ldap.js test, we have replicated it in python now.
    
    This will soon allow the removal of smbscript, once the samba3sam test
    conversion is complete.
    
    Andrew Bartlett

commit d96a6482dad54d1d27a87107865e833a9c32cf53
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jun 19 11:05:20 2008 +1000

    Add a blackbox test for the provision-backend script.
    
    This test (as most tests do :-) found a few bugs, also fixed in this
    commit.
    
    Andrew Bartlett

commit e28481fc0976231c6f4cb7a5f7c7708f4becdb18
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jun 19 09:34:04 2008 +1000

    Don't sign NTP packets to disabled accounts
    
    (As this would allow an offline attack on their password)
    
    Andrew Bartlett

-----------------------------------------------------------------------

Summary of changes:
 source/dsdb/samdb/ldb_modules/simple_ldap_map.c  |    2 +-
 source/ntp_signd/ntp_signd.c                     |   11 +-
 source/scripting/python/samba/provision.py       |   57 +-
 source/selftest/samba4_tests.sh                  |    2 +-
 source/setup/tests/blackbox_provision-backend.sh |   25 +
 source/smbd/service_stream.c                     |    4 +-
 testprogs/ejs/ldap.js                            | 1596 ----------------------
 7 files changed, 69 insertions(+), 1628 deletions(-)
 create mode 100755 source/setup/tests/blackbox_provision-backend.sh
 delete mode 100755 testprogs/ejs/ldap.js


Changeset truncated at 500 lines:

diff --git a/source/dsdb/samdb/ldb_modules/simple_ldap_map.c b/source/dsdb/samdb/ldb_modules/simple_ldap_map.c
index 91896d7..101ca67 100644
--- a/source/dsdb/samdb/ldb_modules/simple_ldap_map.c
+++ b/source/dsdb/samdb/ldb_modules/simple_ldap_map.c
@@ -158,7 +158,7 @@ static struct ldb_val objectCategory_always_dn(struct ldb_module *module, TALLOC
 	const struct ldb_schema_attribute *a = ldb_schema_attribute_by_name(module->ldb, "objectCategory");
 
 	dn = ldb_dn_new(ctx, module->ldb, val->data);
-	if (dn && ldb_dn_is_valid(dn)) {
+	if (dn && ldb_dn_validate(dn)) {
 		talloc_free(dn);
 		return val_copy(module, ctx, val);
 	}
diff --git a/source/ntp_signd/ntp_signd.c b/source/ntp_signd/ntp_signd.c
index fdd97e4..c1ac7db 100644
--- a/source/ntp_signd/ntp_signd.c
+++ b/source/ntp_signd/ntp_signd.c
@@ -123,9 +123,10 @@ static NTSTATUS ntp_signd_recv(void *private, DATA_BLOB wrapped_input)
 	struct signed_reply signed_reply;
 	enum ndr_err_code ndr_err;
 	struct ldb_result *res;
-	const char *attrs[] = { "unicodePwd", NULL };
+	const char *attrs[] = { "unicodePwd", "userAccountControl", NULL };
 	struct MD5Context ctx;
 	struct samr_Password *nt_hash;
+	uint32_t user_account_control;
 	int ret;
 
 	NT_STATUS_HAVE_NO_MEMORY(tmp_ctx);
@@ -184,6 +185,14 @@ static NTSTATUS ntp_signd_recv(void *private, DATA_BLOB wrapped_input)
 		return signing_failure(ntp_signdconn, sign_request.packet_id);
 	}
 
+	user_account_control = ldb_msg_find_attr_as_uint(res->msgs[0], "userAccountControl", 0);
+
+	if (user_account_control & UF_ACCOUNTDISABLE) {
+		DEBUG(1, ("Account for SID [%s] is disabled\n", dom_sid_string(tmp_ctx, sid)));
+		talloc_free(tmp_ctx);
+		return NT_STATUS_ACCESS_DENIED;
+	}
+
 	nt_hash = samdb_result_hash(tmp_ctx, res->msgs[0], "unicodePwd");
 	if (!nt_hash) {
 		DEBUG(1, ("No unicodePwd found on record of SID %s for NTP signing\n", dom_sid_string(tmp_ctx, sid)));
diff --git a/source/scripting/python/samba/provision.py b/source/scripting/python/samba/provision.py
index 93a4c8f..5040442 100644
--- a/source/scripting/python/samba/provision.py
+++ b/source/scripting/python/samba/provision.py
@@ -1150,15 +1150,18 @@ def provision_backend(setup_dir=None, message=None,
     if root is None:
         root = findnss(pwd.getpwnam, ["root"])[0]
 
-    if smbconf is None:
-        etcdir = os.path.join(targetdir, "etc")
-        os.makedirs(etcdir)
-        smbconf = os.path.join(etcdir, "smb.conf")
+    if adminpass is None:
+        adminpass = misc.random_password(12)
+
+    if targetdir is not None:
+        if (not os.path.exists(os.path.join(targetdir, "etc"))):
+            os.makedirs(os.path.join(targetdir, "etc"))
+        smbconf = os.path.join(targetdir, "etc", "smb.conf")
 
     # only install a new smb.conf if there isn't one there already
     if not os.path.exists(smbconf):
-        make_smbconf(smbconf, setup_path, hostname, domain, realm, 
-                              serverrole, targetdir)
+        make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole, 
+                     targetdir)
 
     lp = param.LoadParm()
     lp.load(smbconf)
@@ -1230,11 +1233,11 @@ def provision_backend(setup_dir=None, message=None,
        
     elif ldap_backend_type == "openldap":
         attrs = ["linkID", "lDAPDisplayName"]
-    res = schemadb.search(expression="(&(&(linkID=*)(!(linkID:1.2.840.113556.1.4.803:=1)))(objectclass=attributeSchema))", base=names.schemadn, scope=SCOPE_SUBTREE, attrs=attrs)
+        res = schemadb.search(expression="(&(&(linkID=*)(!(linkID:1.2.840.113556.1.4.803:=1)))(objectclass=attributeSchema))", base=names.schemadn, scope=SCOPE_SUBTREE, attrs=attrs)
 
-    memberof_config = "# Generated from schema in %s\n" % schemadb_path
-    refint_attributes = ""
-    for i in range (0, len(res)):
+        memberof_config = "# Generated from schema in %s\n" % schemadb_path
+        refint_attributes = ""
+        for i in range (0, len(res)):
             expression = "(&(objectclass=attributeSchema)(linkID=%d))" % (int(res[i]["linkID"][0])+1)
             target = schemadb.searchone(basedn=names.schemadn, 
                                         expression=expression, 
@@ -1252,11 +1255,11 @@ memberof-dangling-error 32
 
 """
 
-    memberof_config += """
+                memberof_config += """
 overlay refint
 refint_attributes""" + refint_attributes + "\n"
     
-    setup_file(setup_path("slapd.conf"), paths.slapdconf,
+        setup_file(setup_path("slapd.conf"), paths.slapdconf,
                    {"DNSDOMAIN": names.dnsdomain,
                     "LDAPDIR": paths.ldapdir,
                     "DOMAINDN": names.domaindn,
@@ -1265,27 +1268,27 @@ refint_attributes""" + refint_attributes + "\n"
                     "LDAPMANAGERDN": names.ldapmanagerdn,
                     "LDAPMANAGERPASS": adminpass,
                     "MEMBEROF_CONFIG": memberof_config})
-    setup_file(setup_path("modules.conf"), paths.modulesconf,
+        setup_file(setup_path("modules.conf"), paths.modulesconf,
                    {"REALM": names.realm})
         
-    setup_db_config(setup_path, os.path.join(paths.ldapdir, os.path.join("db", "user")))
-    setup_db_config(setup_path, os.path.join(paths.ldapdir, os.path.join("db", "config")))
-    setup_db_config(setup_path, os.path.join(paths.ldapdir, os.path.join("db", "schema")))
-    mapping = "schema-map-openldap-2.3"
-    backend_schema = "backend-schema.schema"
-
-    ldapi_uri = "ldapi://" + urllib.quote(os.path.join(paths.private_dir, "ldap", "ldapi"), safe="")
-    if ldap_backend_port is not None:
-        server_port_string = " -h ldap://0.0.0.0:%d" % ldap_backend_port
-    else:
-        server_port_string = ""
-    slapdcommand="Start slapd with:    slapd -f " + paths.ldapdir + "/slapd.conf -h " + ldapi_uri + server_port_string
+        setup_db_config(setup_path, os.path.join(paths.ldapdir, os.path.join("db", "user")))
+        setup_db_config(setup_path, os.path.join(paths.ldapdir, os.path.join("db", "config")))
+        setup_db_config(setup_path, os.path.join(paths.ldapdir, os.path.join("db", "schema")))
+        mapping = "schema-map-openldap-2.3"
+        backend_schema = "backend-schema.schema"
 
-    schema_command = "bin/ad2oLschema --option=convert:target=" + ldap_backend_type + " -I " + setup_path(mapping) + " -H tdb://" + schemadb_path + " -O " + os.path.join(paths.ldapdir, backend_schema)
+        ldapi_uri = "ldapi://" + urllib.quote(os.path.join(paths.private_dir, "ldap", "ldapi"), safe="")
+        if ldap_backend_port is not None:
+            server_port_string = " -h ldap://0.0.0.0:%d" % ldap_backend_port
+        else:
+            server_port_string = ""
+            slapdcommand="Start slapd with:    slapd -f " + paths.ldapdir + "/slapd.conf -h " + ldapi_uri + server_port_string
 
+            
+    schema_command = "bin/ad2oLschema --option=convert:target=" + ldap_backend_type + " -I " + setup_path(mapping) + " -H tdb://" + schemadb_path + " -O " + os.path.join(paths.ldapdir, backend_schema)
+            
     os.system(schema_command)
 
-
     message("Your %s Backend for Samba4 is now configured, and is ready to be started" % ldap_backend_type)
     message("Server Role:         %s" % serverrole)
     message("Hostname:            %s" % names.hostname)
diff --git a/source/selftest/samba4_tests.sh b/source/selftest/samba4_tests.sh
index e9fbede..79ebc7b 100755
--- a/source/selftest/samba4_tests.sh
+++ b/source/selftest/samba4_tests.sh
@@ -88,7 +88,6 @@ done
 LDBDIR=$samba4srcdir/lib/ldb
 export LDBDIR
 plantest "ldb" none TEST_DATA_PREFIX=\$PREFIX $LDBDIR/tests/test-tdb.sh
-plantest "js.ldap" dc $SCRIPTDIR/ldap.js $CONFIGURATION -d 10 \$SERVER -U\$USERNAME%\$PASSWORD
 
 # Tests for RPC
 
@@ -358,5 +357,6 @@ plantest "blackbox.upgrade" none $PYTHON setup/upgrade $CONFIGURATION --targetdi
 rm -rf $PREFIX/provision
 mkdir $PREFIX/provision
 plantest "blackbox.provision.py" none PYTHON="$PYTHON" $samba4srcdir/setup/tests/blackbox_provision.sh "$PREFIX/provision"
+plantest "blackbox.provision-backend.py" none PYTHON="$PYTHON" $samba4srcdir/setup/tests/blackbox_provision-backend.sh "$PREFIX/provision"
 plantest "blackbox.setpassword.py" none PYTHON="$PYTHON" $samba4srcdir/setup/tests/blackbox_setpassword.sh "$PREFIX/provision"
 plantest "blackbox.newuser.py" none PYTHON="$PYTHON" $samba4srcdir/setup/tests/blackbox_newuser.sh "$PREFIX/provision" 
diff --git a/source/setup/tests/blackbox_provision-backend.sh b/source/setup/tests/blackbox_provision-backend.sh
new file mode 100755
index 0000000..312ca5c
--- /dev/null
+++ b/source/setup/tests/blackbox_provision-backend.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+if [ $# -lt 1 ]; then
+cat <<EOF
+Usage: blackbox_provision.sh PREFIX
+EOF
+exit 1;
+fi
+
+PREFIX="$1"
+shift 1
+
+. `dirname $0`/../../../testprogs/blackbox/subunit.sh
+
+testit "openldap-backend" $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=openldap --targetdir=$PREFIX/openldap-backend
+testit "fedora-ds-backend" $PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=fedora-ds --targetdir=$PREFIX/fedora-ds-backend
+
+reprovision() {
+	$PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=openldap --targetdir=$PREFIX/openldap-backend-reprovision
+	$PYTHON ./setup/provision-backend --domain=FOO --realm=foo.example.com --host-name=samba --ldap-backend-type=openldap --targetdir=$PREFIX/openldap-backend-reprovision
+}
+
+testit "reprovision-backend" reprovision
+
+exit $failed
diff --git a/source/smbd/service_stream.c b/source/smbd/service_stream.c
index e27d87e..f27560f 100644
--- a/source/smbd/service_stream.c
+++ b/source/smbd/service_stream.c
@@ -85,13 +85,13 @@ void stream_terminate_connection(struct stream_connection *srv_conn, const char
 */
 static void stream_io_handler(struct stream_connection *conn, uint16_t flags)
 {
-	conn->processing = true;
+	conn->processing++;
 	if (flags & EVENT_FD_WRITE) {
 		conn->ops->send_handler(conn, flags);
 	} else if (flags & EVENT_FD_READ) {
 		conn->ops->recv_handler(conn, flags);
 	}
-	conn->processing = false;
+	conn->processing--;
 
 	if (conn->terminate) {
 		stream_terminate_connection(conn, conn->terminate);
diff --git a/testprogs/ejs/ldap.js b/testprogs/ejs/ldap.js
deleted file mode 100755
index a5e6ab3..0000000
--- a/testprogs/ejs/ldap.js
+++ /dev/null
@@ -1,1596 +0,0 @@
-#!/bin/sh
-exec smbscript "$0" ${1+"$@"}
-/*
-	test certin LDAP behaviours
-*/
-
-var ldb = ldb_init();
-var gc_ldb = ldb_init();
-
-var options = GetOptions(ARGV, 
-		"POPT_AUTOHELP",
-		"POPT_COMMON_SAMBA",
-		"POPT_COMMON_CREDENTIALS");
-if (options == undefined) {
-   println("Failed to parse options");
-   return -1;
-}
-
-libinclude("base.js");
-
-if (options.ARGV.length != 1) {
-   println("Usage: ldap.js <HOST>");
-   return -1;
-}
-
-var host = options.ARGV[0];
-
-function basic_tests(ldb, gc_ldb, base_dn, configuration_dn, schema_dn)
-{
-	println("Running basic tests");
-
-	ldb.del("cn=ldaptestcomputer,cn=computers," + base_dn);
-	ldb.del("cn=ldaptestcomputer3,cn=computers," + base_dn);
-	ldb.del("cn=ldaptest2computer,cn=computers," + base_dn);
-	ldb.del("cn=ldaptestuser,cn=users," + base_dn);
-	ldb.del("cn=ldaptestuser2,cn=users," + base_dn);
-	ldb.del("cn=ldaptestuser3,cn=users," + base_dn);
-	ldb.del("cn=ldaptestuser4,cn=users," + base_dn);
-	ldb.del("cn=ldaptestuser5,cn=users," + base_dn);
-	ldb.del("CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn);
-	ldb.del("cn=ldaptestuser7,cn=users," + base_dn);
-	ldb.del("CN=ldaptestcontainer2," + base_dn);
-	ldb.del("cn=ldaptestgroup,cn=users," + base_dn);
-	ldb.del("cn=ldaptestgroup2,cn=users," + base_dn);
-
-	println("Testing group add with invalid member");
-	var ok = ldb.add("
-dn: cn=ldaptestgroup,cn=uSers," + base_dn + "
-objectclass: group
-member: cn=ldaptestuser,cn=useRs," + base_dn + "
-");
-
-	if (ok.error != 32) { /* LDAP_NO_SUCH_OBJECT */
-		println(ok.errstr);
-		assert(ok.error == 32);
-	}
-
-	println("Testing user add");
-	var ok = ldb.add("
-dn: cn=ldaptestuser,cn=uSers," + base_dn + "
-objectclass: user
-objectclass: person
-cN: LDAPtestUSER
-givenname: ldap
-sn: testy
-");
-	if (ok.error != 0) {
-		ok = ldb.del("cn=ldaptestuser,cn=users," + base_dn);
-		if (ok.error != 0) {
-			println(ok.errstr);
-			assert(ok.error == 0);
-		}
-		ok = ldb.add("
-dn: cn=ldaptestuser,cn=uSers," + base_dn + "
-objectclass: user
-objectclass: person
-cN: LDAPtestUSER
-givenname: ldap
-sn: testy
-");
-		if (ok.error != 0) {
-			println(ok.errstr);
-			assert(ok.error == 0);
-		}
-	}
-
-	var ok = ldb.add("
-dn: cn=ldaptestgroup,cn=uSers," + base_dn + "
-objectclass: group
-member: cn=ldaptestuser,cn=useRs," + base_dn + "
-");
-	if (ok.error != 0) {
-		println(ok.errstr);
-		assert(ok.error == 0);
-	}
-
-	var ok = ldb.add("
-dn: cn=ldaptestcomputer,cn=computers," + base_dn + "
-objectclass: computer
-cN: LDAPtestCOMPUTER
-");
-	if (ok.error != 0) {
-		ok = ldb.del("cn=ldaptestcomputer,cn=computers," + base_dn);
-		if (ok.error != 0) {
-			println(ok.errstr);
-			assert(ok.error == 0);
-		}
-		ok = ldb.add("
-dn: cn=ldaptestcomputer,cn=computers," + base_dn + "
-objectClass: computer
-cn: LDAPtestCOMPUTER
-");
-		if (ok.error != 0) {
-			println(ok.errstr);
-			assert(ok.error == 0);
-		}
-	}
-
-	if (ok.error != 0) {
-		println(ok.errstr);
-		assert(ok.error == 0);
-	}
-
-	var ok = ldb.add("
-dn: cn=ldaptest2computer,cn=computers," + base_dn + "
-objectClass: computer
-cn: LDAPtest2COMPUTER
-userAccountControl: 4096
-displayname: ldap testy
-");
-	if (ok.error != 0) {
-		ok = ldb.del("cn=ldaptest2computer,cn=computers," + base_dn);
-		if (ok.error != 0) {
-			println(ok.errstr);
-		//	assert(ok.error == 0);
-		}
-		ok = ldb.add("
-dn: cn=ldaptest2computer,cn=computers," + base_dn + "
-objectClass: computer
-cn: LDAPtest2COMPUTER
-userAccountControl: 4096
-displayname: ldap testy
-");
-		if (ok.error != 0) {
-			println(ok.errstr);
-			assert(ok.error == 0);
-		}
-	}
-
-	var ok = ldb.add("
-dn: cn=ldaptestcomputer3,cn=computers," + base_dn + "
-objectClass: computer
-cn: LDAPtest2COMPUTER
-");
-	if (ok.error != 34) {
-		println("Did not reject invalid RDN compared with DN: " + ok.errstr);
-		assert(ok.error == 34);
-	}
-
-	var ok = ldb.add("
-dn: cn=ldaptestcomputer3,cn=computers," + base_dn + "
-objectClass: computer
-cn: LDAPtestCOMPUTER3
-sAMAccountType: 805306368
-");
-
-	if (ok.error != 53) {
-		println("Did not reject invalid 'sAMAccountType: 805306368': " + ok.errstr);
-		assert(ok.error == 53);
-	}
-
-	var ok = ldb.add("
-dn: cn=ldaptestcomputer3,cn=computers," + base_dn + "
-objectClass: computer
-cn: LDAPtestCOMPUTER3
-userAccountControl: 0
-");
-
-	if (ok.error != 53) {
-		println("Did not reject invalid 'userAccountControl: 0': " + ok.errstr);
-		assert(ok.error == 53);
-	}
-
-	var ok = ldb.add("
-dn: cn=ldaptestuser7,cn=users," + base_dn + "
-objectClass: user
-cn: LDAPtestuser7
-userAccountControl: 0
-");
-
-	if (ok.error != 53) {
-		println("Did not reject invalid 'userAccountControl: 0': " + ok.errstr);
-		assert(ok.error == 53);
-	}
-
-	var ok = ldb.add("
-dn: cn=ldaptestuser7,cn=users," + base_dn + "
-objectClass: user
-cn: LDAPtestuser7
-userAccountControl: 2
-");
-
-	if (ok.error != 0) {
-		println("Did not accept 'userAccountControl: 2': " + ok.errstr);
-		assert(ok.error == 0);
-	}
-
-	    ldb.del("cn=ldaptestuser7,cn=users," + base_dn);
-
-	var ok = ldb.add("
-dn: cn=ldaptestcomputer3,cn=computers," + base_dn + "
-objectclass: computer
-cN: LDAPtestCOMPUTER3
-");
-	if (ok.error != 0) {
-		ok = ldb.del("cn=ldaptestcomputer3,cn=computers," + base_dn);
-		if (ok.error != 0) {
-			println(ok.errstr);
-			assert(ok.error == 0);
-		}
-		ok = ldb.add("
-dn: cn=ldaptestcomputer3,cn=computers," + base_dn + "
-objectClass: computer
-cn: LDAPtestCOMPUTER3
-");
-		if (ok.error != 0) {
-			println(ok.errstr);
-			assert(ok.error == 0);
-		}
-	}
-
-	println("Testing ldb.search for (&(cn=ldaptestcomputer3)(objectClass=user))");
-	var res = ldb.search("(&(cn=ldaptestcomputer3)(objectClass=user))");
-	if (res.error != 0 || res.msgs.length != 1) {
-		println("Could not find (&(cn=ldaptestcomputer3)(objectClass=user))");
-		assert(res.error == 0);
-		assert(res.msgs.length == 1);
-	}
-
-	assert(res.msgs[0].dn == ("CN=ldaptestcomputer3,CN=Computers," + base_dn));
-	assert(res.msgs[0].cn == "ldaptestcomputer3");
-	assert(res.msgs[0].name == "ldaptestcomputer3");
-	assert(res.msgs[0].objectClass[0] == "top");
-	assert(res.msgs[0].objectClass[1] == "person");
-	assert(res.msgs[0].objectClass[2] == "organizationalPerson");
-	assert(res.msgs[0].objectClass[3] == "user");
-	assert(res.msgs[0].objectClass[4] == "computer");
-	assert(res.msgs[0].objectGUID != undefined);
-	assert(res.msgs[0].whenCreated != undefined);
-	assert(res.msgs[0].objectCategory == ("CN=Computer,CN=Schema,CN=Configuration," + base_dn));
-	assert(res.msgs[0].primaryGroupID == 513);
-	assert(res.msgs[0].sAMAccountType == 805306368);
-	assert(res.msgs[0].userAccountControl == 546);
-
-	    ldb.del(res.msgs[0].dn);
-
-	    println("Testing attribute or value exists behaviour");
-	    ok = ldb.modify("
-dn: cn=ldaptest2computer,cn=computers," + base_dn + "
-changetype: modify
-replace: servicePrincipalName
-servicePrincipalName: host/ldaptest2computer
-servicePrincipalName: host/ldaptest2computer
-servicePrincipalName: cifs/ldaptest2computer
-");
-
-//LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS
-		if (ok.error != 20) {
-			println("Expected error LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS, got :" + ok.errstr);
-			assert(ok.error == 20);
-		}
-
-	    ok = ldb.modify("
-dn: cn=ldaptest2computer,cn=computers," + base_dn + "
-changetype: modify
-replace: servicePrincipalName
-servicePrincipalName: host/ldaptest2computer
-servicePrincipalName: cifs/ldaptest2computer


-- 
Samba Shared Repository


More information about the samba-cvs mailing list