[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