[SCM] Samba Shared Repository - branch master updated

Matthias Dieter Wallnöfer mdw at samba.org
Fri Jun 18 02:06:42 MDT 2010


The branch, master has been updated
       via  3fa3804... unittest: Change the name of the base ldb test so that it can be easily called separatly
       via  c9ef9da... s4:ldap_backend.c - fix crash bugs when we got in error situations with "res" still set to "NULL"
       via  e7fef1a... s4:ldap_backend.c - fix a small error (use "ModifyResponse" rather than "AddResponse")
       via  955e183... s4:objectclass LDB module - move "mem_ctx" initialisation lower
       via  56e4822... s4:dcesrv_netr_DsRAddressToSitenamesExW - fix the detection of the address family in a better way
       via  01e9d09... s4:torture/rpc/netlogon.c - make sure that the address family is set in little endian in the "AddressToSitenames" tests
       via  917f601... s4:torture/rpc/netlogon.c - activate "AddressToSitenames" tests which do run against s4
      from  be31b2b... Use #defined constant instead of "false" to be clearer about intent.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 3fa38046cb76d38a6be8e29111a4be225b8bdf96
Author: Matthieu Patou <mat at matws.net>
Date:   Wed Jun 16 12:39:16 2010 +0400

    unittest: Change the name of the base ldb test so that it can be easily called separatly

commit c9ef9da12fed2c3ea1d46dc710393f6ffebe7491
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu Jun 17 16:35:55 2010 +0200

    s4:ldap_backend.c - fix crash bugs when we got in error situations with "res" still set to "NULL"

commit e7fef1ac84c39647306f8bb075f97e36549a8289
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu Jun 17 16:00:13 2010 +0200

    s4:ldap_backend.c - fix a small error (use "ModifyResponse" rather than "AddResponse")

commit 955e1835ef14aa961127007014dfd93b464779eb
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu Jun 17 15:27:50 2010 +0200

    s4:objectclass LDB module - move "mem_ctx" initialisation lower
    
    Saves us some "talloc_free"s on error cases

commit 56e4822566743a42a3e20cc9dc969826969ba156
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu Jun 17 09:42:17 2010 +0200

    s4:dcesrv_netr_DsRAddressToSitenamesExW - fix the detection of the address family in a better way
    
    Obviously the last attempt wasn't enough. Now we do really only read the first
    byte in the address buffer which on little endian transmission does always
    contain the address family (MS-NRPC 2.2.1.2.4.1).
    This should now be working platform-independently.

commit 01e9d090f1f9f340d9bdb597341b445544cf7a7d
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu Jun 17 09:33:10 2010 +0200

    s4:torture/rpc/netlogon.c - make sure that the address family is set in little endian in the "AddressToSitenames" tests

commit 917f6015a6292a5b9b88607060dc5f87dc78fb9b
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu Jun 17 09:23:00 2010 +0200

    s4:torture/rpc/netlogon.c - activate "AddressToSitenames" tests which do run against s4

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

Summary of changes:
 source4/dsdb/samdb/ldb_modules/objectclass.c  |   27 ++++------
 source4/ldap_server/ldap_backend.c            |   11 ++--
 source4/rpc_server/netlogon/dcerpc_netlogon.c |    5 +-
 source4/selftest/tests.sh                     |    4 +-
 source4/torture/rpc/netlogon.c                |   64 +++++++++++++------------
 5 files changed, 55 insertions(+), 56 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/samdb/ldb_modules/objectclass.c b/source4/dsdb/samdb/ldb_modules/objectclass.c
index 2df8097..e5769a6 100644
--- a/source4/dsdb/samdb/ldb_modules/objectclass.c
+++ b/source4/dsdb/samdb/ldb_modules/objectclass.c
@@ -414,57 +414,52 @@ static int objectclass_do_add(struct oc_context *ac)
 {
 	struct ldb_context *ldb;
 	struct ldb_request *add_req;
-	char *value;
 	struct ldb_message_element *objectclass_element, *el;
 	struct ldb_message *msg;
 	TALLOC_CTX *mem_ctx;
 	struct class_list *sorted, *current;
-	int ret;
+	const char *rdn_name = NULL;
+	char *value;
 	const struct dsdb_class *objectclass;
 	int32_t systemFlags = 0;
-	const char *rdn_name = NULL;
+	int ret;
 
 	ldb = ldb_module_get_ctx(ac->module);
 
-	mem_ctx = talloc_new(ac);
-	if (mem_ctx == NULL) {
-		ldb_oom(ldb);
-		return LDB_ERR_OPERATIONS_ERROR;
-	}
-
 	msg = ldb_msg_copy_shallow(ac, ac->req->op.add.message);
 
 	/* Check if we have a valid parent - this check is needed since
 	 * we don't get a LDB_ERR_NO_SUCH_OBJECT error. */
 	if (ac->search_res == NULL) {
 		if (ldb_dn_compare(ldb_get_root_basedn(ldb), msg->dn) == 0) {
-			/* Allow the tree to be started */
-			
-			/* but don't keep any error string, it's meaningless */
+			/* Allow the tree to be started but don't keep any
+			 * error strings - they're meaningless. */
 			ldb_set_errstring(ldb, NULL);
 		} else {
 			ldb_asprintf_errstring(ldb, "objectclass: Cannot add %s, parent does not exist!", 
 					       ldb_dn_get_linearized(msg->dn));
-			talloc_free(mem_ctx);
 			return LDB_ERR_NO_SUCH_OBJECT;
 		}
 	} else {
-
 		/* Fix up the DN to be in the standard form, taking
 		 * particular care to match the parent DN */
 		ret = fix_dn(msg, 
 			     ac->req->op.add.message->dn,
 			     ac->search_res->message->dn,
 			     &msg->dn);
-
 		if (ret != LDB_SUCCESS) {
 			ldb_asprintf_errstring(ldb, "objectclass: Could not munge DN %s into normal form",
 					       ldb_dn_get_linearized(ac->req->op.add.message->dn));
-			talloc_free(mem_ctx);
 			return ret;
 		}
+	}
 
+	mem_ctx = talloc_new(ac);
+	if (mem_ctx == NULL) {
+		ldb_oom(ldb);
+		return LDB_ERR_OPERATIONS_ERROR;
 	}
+
 	if (ac->schema != NULL) {
 		/* This is now the objectClass list from the database */
 		objectclass_element = ldb_msg_find_element(msg, "objectClass");
diff --git a/source4/ldap_server/ldap_backend.c b/source4/ldap_server/ldap_backend.c
index 34d59b5..364fe54 100644
--- a/source4/ldap_server/ldap_backend.c
+++ b/source4/ldap_server/ldap_backend.c
@@ -744,10 +744,9 @@ reply:
 				       &errstr);
 	}
 
-	modify_result = &modify_reply->msg->r.AddResponse;
+	modify_result = &modify_reply->msg->r.ModifyResponse;
 	modify_result->dn = NULL;
-
-	if (res->refs != NULL) {
+	if ((res != NULL) && (res->refs != NULL)) {
 		modify_result->resultcode = map_ldb_error(local_ctx,
 							  LDB_ERR_REFERRAL,
 							  NULL, &errstr);
@@ -837,7 +836,7 @@ reply:
 
 	add_result = &add_reply->msg->r.AddResponse;
 	add_result->dn = NULL;
-	if (res->refs != NULL) {
+	if ((res != NULL) && (res->refs != NULL)) {
 		add_result->resultcode =  map_ldb_error(local_ctx,
 							LDB_ERR_REFERRAL, NULL,
 							&errstr);
@@ -893,7 +892,7 @@ reply:
 
 	del_result = &del_reply->msg->r.DelResponse;
 	del_result->dn = NULL;
-	if (res->refs != NULL) {
+	if ((res != NULL) && (res->refs != NULL)) {
 		del_result->resultcode = map_ldb_error(local_ctx,
 						       LDB_ERR_REFERRAL, NULL,
 						       &errstr);
@@ -998,7 +997,7 @@ reply:
 
 	modifydn = &modifydn_r->msg->r.ModifyDNResponse;
 	modifydn->dn = NULL;
-	if (res->refs != NULL) {
+	if ((res != NULL) && (res->refs != NULL)) {
 		modifydn->resultcode = map_ldb_error(local_ctx,
 						     LDB_ERR_REFERRAL, NULL,
 						     &errstr);;
diff --git a/source4/rpc_server/netlogon/dcerpc_netlogon.c b/source4/rpc_server/netlogon/dcerpc_netlogon.c
index b1ac583..28e517f 100644
--- a/source4/rpc_server/netlogon/dcerpc_netlogon.c
+++ b/source4/rpc_server/netlogon/dcerpc_netlogon.c
@@ -1695,8 +1695,9 @@ static WERROR dcesrv_netr_DsRAddressToSitenamesExW(struct dcesrv_call_state *dce
 		if (r->in.addresses[i].size < sizeof(sa_family_t)) {
 			continue;
 		}
-		/* the first two byte of the buffer are the "sin_family" */
-		sin_family = (sa_family_t) *r->in.addresses[i].buffer;
+		/* The first two byte of the buffer are reserved for the
+		 * "sin_family" but for now only the first one is used. */
+		sin_family = r->in.addresses[i].buffer[0];
 
 		switch (sin_family) {
 		case AF_INET:
diff --git a/source4/selftest/tests.sh b/source4/selftest/tests.sh
index 7e3ef17..0ec3c0b 100755
--- a/source4/selftest/tests.sh
+++ b/source4/selftest/tests.sh
@@ -155,9 +155,9 @@ LDBDIR=$samba4srcdir/lib/ldb
 export LDBDIR
 # Don't run LDB tests when using system ldb, as we won't have ldbtest installed
 if [ -f $samba4bindir/ldbtest ]; then
-	plantestsuite "ldb" none TEST_DATA_PREFIX=\$PREFIX $LDBDIR/tests/test-tdb.sh
+	plantestsuite "ldbbase" none TEST_DATA_PREFIX=\$PREFIX $LDBDIR/tests/test-tdb.sh
 else
-	skiptestsuite "ldb" "Using system LDB, ldbtest not available"
+	skiptestsuite "ldbbase" "Using system LDB, ldbtest not available"
 fi
 
 # Tests for RPC
diff --git a/source4/torture/rpc/netlogon.c b/source4/torture/rpc/netlogon.c
index 787914e..09b2882 100644
--- a/source4/torture/rpc/netlogon.c
+++ b/source4/torture/rpc/netlogon.c
@@ -2393,21 +2393,21 @@ static bool test_netr_DsRAddressToSitenamesW(struct torture_context *tctx,
 	addrs[0].size = sizeof(struct sockaddr_in);
 	addrs[0].buffer = talloc_zero_array(tctx, uint8_t, addrs[0].size);
 	addr = (struct sockaddr_in *) addrs[0].buffer;
-	addr->sin_family = AF_INET;
+	addrs[0].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "127.0.0.1", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[1].size = sizeof(struct sockaddr_in);
 	addrs[1].buffer = talloc_zero_array(tctx, uint8_t, addrs[1].size);
 	addr = (struct sockaddr_in *) addrs[1].buffer;
-	addr->sin_family = AF_INET;
+	addrs[1].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "0.0.0.0", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[2].size = sizeof(struct sockaddr_in);
 	addrs[2].buffer = talloc_zero_array(tctx, uint8_t, addrs[2].size);
 	addr = (struct sockaddr_in *) addrs[2].buffer;
-	addr->sin_family = AF_INET;
+	addrs[2].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "255.255.255.255", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
@@ -2415,21 +2415,21 @@ static bool test_netr_DsRAddressToSitenamesW(struct torture_context *tctx,
 	addrs[3].size = sizeof(struct sockaddr_in6);
 	addrs[3].buffer = talloc_zero_array(tctx, uint8_t, addrs[3].size);
 	addr6 = (struct sockaddr_in6 *) addrs[3].buffer;
-	addr6->sin6_family = AF_INET6;
+	addrs[3].buffer[0] = AF_INET6;
 	ret = inet_pton(AF_INET6, "::1", &addr6->sin6_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[4].size = sizeof(struct sockaddr_in6);
 	addrs[4].buffer = talloc_zero_array(tctx, uint8_t, addrs[4].size);
 	addr6 = (struct sockaddr_in6 *) addrs[4].buffer;
-	addr6->sin6_family = AF_INET6;
+	addrs[4].buffer[0] = AF_INET6;
 	ret = inet_pton(AF_INET6, "::", &addr6->sin6_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[5].size = sizeof(struct sockaddr_in6);
 	addrs[5].buffer = talloc_zero_array(tctx, uint8_t, addrs[5].size);
 	addr6 = (struct sockaddr_in6 *) addrs[5].buffer;
-	addr6->sin6_family = AF_INET6;
+	addrs[5].buffer[0] = AF_INET6;
 	ret = inet_pton(AF_INET6, "ff02::1", &addr6->sin6_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 #else
@@ -2438,21 +2438,21 @@ static bool test_netr_DsRAddressToSitenamesW(struct torture_context *tctx,
 	addrs[3].size = sizeof(struct sockaddr_in);
 	addrs[3].buffer = talloc_zero_array(tctx, uint8_t, addrs[3].size);
 	addr = (struct sockaddr_in *) addrs[3].buffer;
-	addr->sin_family = AF_INET;
+	addrs[3].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "127.0.0.1", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[4].size = sizeof(struct sockaddr_in);
 	addrs[4].buffer = talloc_zero_array(tctx, uint8_t, addrs[4].size);
 	addr = (struct sockaddr_in *) addrs[4].buffer;
-	addr->sin_family = AF_INET;
+	addrs[4].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "0.0.0.0", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[5].size = sizeof(struct sockaddr_in);
 	addrs[5].buffer = talloc_zero_array(tctx, uint8_t, addrs[5].size);
 	addr = (struct sockaddr_in *) addrs[5].buffer;
-	addr->sin_family = AF_INET;
+	addrs[5].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "255.255.255.255", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 #endif
@@ -2476,12 +2476,14 @@ static bool test_netr_DsRAddressToSitenamesW(struct torture_context *tctx,
 						     "didn't return default site");
 		}
 		for (i = 3; i < 6; i++) {
-/* Windows returns "NULL" for the sitename if it isn't IPv6 configured
-			torture_assert_casestr_equal(tctx,
-						     ctr->sitename[i].string,
-						     samdb_server_site_name(sam_ctx, tctx),
-						     "didn't return default site");
-*/
+			/* Windows returns "NULL" for the sitename if it isn't
+			 * IPv6 configured */
+			if (torture_setting_bool(tctx, "samba4", false)) {
+				torture_assert_casestr_equal(tctx,
+							     ctr->sitename[i].string,
+							     samdb_server_site_name(sam_ctx, tctx),
+							     "didn't return default site");
+			}
 		}
 	}
 
@@ -2568,21 +2570,21 @@ static bool test_netr_DsRAddressToSitenamesExW(struct torture_context *tctx,
 	addrs[0].size = sizeof(struct sockaddr_in);
 	addrs[0].buffer = talloc_zero_array(tctx, uint8_t, addrs[0].size);
 	addr = (struct sockaddr_in *) addrs[0].buffer;
-	addr->sin_family = AF_INET;
+	addrs[0].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "127.0.0.1", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[1].size = sizeof(struct sockaddr_in);
 	addrs[1].buffer = talloc_zero_array(tctx, uint8_t, addrs[1].size);
 	addr = (struct sockaddr_in *) addrs[1].buffer;
-	addr->sin_family = AF_INET;
+	addrs[1].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "0.0.0.0", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[2].size = sizeof(struct sockaddr_in);
 	addrs[2].buffer = talloc_zero_array(tctx, uint8_t, addrs[2].size);
 	addr = (struct sockaddr_in *) addrs[2].buffer;
-	addr->sin_family = AF_INET;
+	addrs[2].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "255.255.255.255", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
@@ -2590,21 +2592,21 @@ static bool test_netr_DsRAddressToSitenamesExW(struct torture_context *tctx,
 	addrs[3].size = sizeof(struct sockaddr_in6);
 	addrs[3].buffer = talloc_zero_array(tctx, uint8_t, addrs[3].size);
 	addr6 = (struct sockaddr_in6 *) addrs[3].buffer;
-	addr6->sin6_family = AF_INET6;
+	addrs[3].buffer[0] = AF_INET6;
 	ret = inet_pton(AF_INET6, "::1", &addr6->sin6_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[4].size = sizeof(struct sockaddr_in6);
 	addrs[4].buffer = talloc_zero_array(tctx, uint8_t, addrs[4].size);
 	addr6 = (struct sockaddr_in6 *) addrs[4].buffer;
-	addr6->sin6_family = AF_INET6;
+	addrs[4].buffer[0] = AF_INET6;
 	ret = inet_pton(AF_INET6, "::", &addr6->sin6_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[5].size = sizeof(struct sockaddr_in6);
 	addrs[5].buffer = talloc_zero_array(tctx, uint8_t, addrs[5].size);
 	addr6 = (struct sockaddr_in6 *) addrs[5].buffer;
-	addr6->sin6_family = AF_INET6;
+	addrs[5].buffer[0] = AF_INET6;
 	ret = inet_pton(AF_INET6, "ff02::1", &addr6->sin6_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 #else
@@ -2613,21 +2615,21 @@ static bool test_netr_DsRAddressToSitenamesExW(struct torture_context *tctx,
 	addrs[3].size = sizeof(struct sockaddr_in);
 	addrs[3].buffer = talloc_zero_array(tctx, uint8_t, addrs[3].size);
 	addr = (struct sockaddr_in *) addrs[3].buffer;
-	addr->sin_family = AF_INET;
+	addrs[3].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "127.0.0.1", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[4].size = sizeof(struct sockaddr_in);
 	addrs[4].buffer = talloc_zero_array(tctx, uint8_t, addrs[4].size);
 	addr = (struct sockaddr_in *) addrs[4].buffer;
-	addr->sin_family = AF_INET;
+	addrs[4].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "0.0.0.0", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 
 	addrs[5].size = sizeof(struct sockaddr_in);
 	addrs[5].buffer = talloc_zero_array(tctx, uint8_t, addrs[5].size);
 	addr = (struct sockaddr_in *) addrs[5].buffer;
-	addr->sin_family = AF_INET;
+	addrs[5].buffer[0] = AF_INET;
 	ret = inet_pton(AF_INET, "255.255.255.255", &addr->sin_addr);
 	torture_assert(tctx, ret > 0, "inet_pton failed");
 #endif
@@ -2653,12 +2655,14 @@ static bool test_netr_DsRAddressToSitenamesExW(struct torture_context *tctx,
 				       "subnet should be null");
 		}
 		for (i = 3; i < 6; i++) {
-/* Windows returns "NULL" for the sitename if it isn't IPv6 configured
-			torture_assert_casestr_equal(tctx,
-						     ctr->sitename[i].string,
-						     samdb_server_site_name(sam_ctx, tctx),
-						     "didn't return default site");
-*/
+			/* Windows returns "NULL" for the sitename if it isn't
+			 * IPv6 configured */
+			if (torture_setting_bool(tctx, "samba4", false)) {
+				torture_assert_casestr_equal(tctx,
+							     ctr->sitename[i].string,
+							     samdb_server_site_name(sam_ctx, tctx),
+							     "didn't return default site");
+			}
 			torture_assert(tctx, ctr->subnetname[i].string == NULL,
 				       "subnet should be null");
 		}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list