[SCM] Samba Shared Repository - branch master updated
Matthieu Patou
mat at samba.org
Wed Aug 7 00:11:02 MDT 2013
The branch, master has been updated
via f6d1578 drs-cracknames: Add some debugs in the torture to know better which test has failed
via 3de2547 Remove the knownfail flag on cracknames as it didn't fail anymore
via 7fe4630 drs-cracksname: fix problems that prevented to pass our torture tests
via 029e80d drs-crackname: Fix error code so that we have the same as windows
via 552b4f3 drs-cracknames: When cracking NT4 names we should just look at netbios for the match
via aa17a2c drs-crackname: Fix cracknames for the format UNKNOWN when the data is actually a GUID
via beead4d drs-cracknames: Reorganise the cracknames list so that similar format names are group together
via 2f7d772 Add Notes related to DRSUAPI
via b67085d s4-netlogon: honnor DS_RETURN_DNS_NAME flag
via 927a103 s4-netlogon: do not add \ it has already be done in the fill_netlogon_samlogon_response
via 5300984 torture: Quiet a warning about set but not used variable
via 0eb304d torture-drsuapi: Make the name of the dc variable
from 8b1a214 s3-netlogon: Connecting with the system token should be sufficient.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit f6d157858feeb8b59eb353a1a237fe9e359a5dcf
Author: Matthieu Patou <mat at matws.net>
Date: Tue Jul 30 16:09:00 2013 -0700
drs-cracknames: Add some debugs in the torture to know better which test has failed
Signed-off-by: Matthieu Patou <mat at matws.net>
Reviewed-By: Andrew Bartlett <abarlett at samba.org>
Autobuild-User(master): Matthieu Patou <mat at samba.org>
Autobuild-Date(master): Wed Aug 7 08:10:58 CEST 2013 on sn-devel-104
commit 3de2547e29cd29ff4a48cadaf392129d7893d77a
Author: Matthieu Patou <mat at matws.net>
Date: Sun Jun 30 20:45:28 2013 -0700
Remove the knownfail flag on cracknames as it didn't fail anymore
Signed-off-by: Matthieu Patou <mat at matws.net>
Reviewed-by: Andrew Bartlett <abarlett at samba.org>
commit 7fe4630bad232c09e29739beedda2e2fb63747ed
Author: Matthieu Patou <mat at matws.net>
Date: Sun Jun 30 20:44:22 2013 -0700
drs-cracksname: fix problems that prevented to pass our torture tests
Some of the problems where also reported by Microsoft testing tools
Signed-off-by: Matthieu Patou <mat at matws.net>
Reviewed-by: Andrew Bartlett <abarlett at samba.org>
commit 029e80da9d1ab5096cd0981110b588245f8fd50d
Author: Matthieu Patou <mat at matws.net>
Date: Sun Jun 30 02:04:20 2013 -0700
drs-crackname: Fix error code so that we have the same as windows
Signed-off-by: Matthieu Patou <mat at matws.net>
Reviewed-by: Andrew Bartlett <abarlett at samba.org>
commit 552b4f3e022dca594e1dada7979fe351eee8cf9b
Author: Matthieu Patou <mat at matws.net>
Date: Sun Jun 30 02:03:02 2013 -0700
drs-cracknames: When cracking NT4 names we should just look at netbios for the match
Looking at dnsRoot will yield a result for domain.tld\username when it
shouldn't work.
Signed-off-by: Matthieu Patou <mat at matws.net>
Reviewed-by: Andrew Bartlett <abarlett at samba.org>
commit aa17a2c01dbab2e522a8ccccaed7943963bab5b9
Author: Matthieu Patou <mat at matws.net>
Date: Sat Jun 29 16:02:32 2013 -0700
drs-crackname: Fix cracknames for the format UNKNOWN when the data is actually a GUID
The cannonical crackname expect a "/" or it returns
DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR, when doing UNKNOWN format it's not
an error to not have a "/" in the name to crack it's just a sign the
name is not a cannonical one.
Signed-off-by: Matthieu Patou <mat at matws.net>
Reviewed-by: Andrew Bartlett <abarlett at samba.org>
commit beead4d431b4d0cdd5e9f58fef481848d9daeaff
Author: Matthieu Patou <mat at matws.net>
Date: Fri Jun 28 01:11:46 2013 -0700
drs-cracknames: Reorganise the cracknames list so that similar format names are group together
It makes easier when reviewing failed test case in DRSR testsuite
Signed-off-by: Matthieu Patou <mat at matws.net>
Reviewed-by: Andrew Bartlett <abarlett at samba.org>
commit 2f7d772583c8cdb6f7fc2b96addc54b9f9b12cd1
Author: Matthieu Patou <mat at matws.net>
Date: Thu Jun 27 23:58:41 2013 -0700
Add Notes related to DRSUAPI
Signed-off-by: Matthieu Patou <mat at matws.net>
Reviewed-by: Andrew Bartlett <abarlett at samba.org>
commit b67085de7fdfb41c42c71438f2e4b5474b3b111a
Author: Matthieu Patou <mat at matws.net>
Date: Tue Sep 27 14:06:03 2011 -0400
s4-netlogon: honnor DS_RETURN_DNS_NAME flag
Reviewed-By: Andrew Bartlett <abarlett at samba.org>
commit 927a1030d78c25dbc43b6470f9ffe8b5fe664835
Author: Matthieu Patou <mat at matws.net>
Date: Mon Sep 26 18:54:04 2011 -0400
s4-netlogon: do not add \\ it has already be done in the fill_netlogon_samlogon_response
Reviewed-By: Andrew Bartlett <abarlett at samba.org>
commit 530098440ee34b6fc23c2786b2df411978d15c97
Author: Matthieu Patou <mat at matws.net>
Date: Tue Jul 30 16:07:56 2013 -0700
torture: Quiet a warning about set but not used variable
Signed-off-by: Matthieu Patou <mat at matws.net>
Reviewed-By: Andrew Bartlett <abarlett at samba.org>
commit 0eb304d536f27bcb647d7f8c0e57d187b59c0caa
Author: Matthieu Patou <mat at debian>
Date: Tue Jul 30 21:45:59 2013 -0700
torture-drsuapi: Make the name of the dc variable
In case some tests fails or if the removal takes sometime to replicate
to all the DCs
Reviewed-By: Andrew Bartlett <abarlett at samba.org>
-----------------------------------------------------------------------
Summary of changes:
selftest/knownfail | 2 -
source4/dsdb/samdb/cracknames.c | 36 ++++++++++++++++++------
source4/rpc_server/drsuapi/dcesrv_drsuapi.c | 12 ++++----
source4/rpc_server/drsuapi/updaterefs.c | 1 +
source4/rpc_server/netlogon/dcerpc_netlogon.c | 13 ++++++++-
source4/torture/rpc/drsuapi.c | 23 ++++++++-------
source4/torture/rpc/drsuapi_cracknames.c | 4 +++
7 files changed, 62 insertions(+), 29 deletions(-)
Changeset truncated at 500 lines:
diff --git a/selftest/knownfail b/selftest/knownfail
index 0c501fa..c075ba6 100644
--- a/selftest/knownfail
+++ b/selftest/knownfail
@@ -93,7 +93,6 @@
^samba4.rpc.lsalookup with seal,padcheck
^samba4.rpc.lsalookup with validate
^samba4.rpc.lsalookup with bigendian
-^samba4.rpc.cracknames
^samba4.rpc.netlogon.*.LogonUasLogon
^samba4.rpc.netlogon.*.LogonUasLogoff
^samba4.rpc.netlogon.*.DatabaseSync
@@ -155,7 +154,6 @@
#^samba4.ldap.dirsync.python.dc..__main__.ExtendedDirsyncTests.*
^samba4.libsmbclient.opendir.opendir # This requires netbios browsing
^samba4.rpc.drsuapi.*.drsuapi.DsGetDomainControllerInfo\(.*\)$
-^samba4.rpc.drsuapi.*.drsuapi.DsCrackNames\(.*\)$
^samba4.smb2.oplock.exclusive2\(.*\)$ # samba 4 oplocks are a mess
^samba4.smb2.oplock.exclusive5\(.*\)$ # samba 4 oplocks are a mess
^samba4.smb2.oplock.exclusive6\(.*\)$ # samba 4 oplocks are a mess
diff --git a/source4/dsdb/samdb/cracknames.c b/source4/dsdb/samdb/cracknames.c
index 0c4cdfc..d09da25 100644
--- a/source4/dsdb/samdb/cracknames.c
+++ b/source4/dsdb/samdb/cracknames.c
@@ -468,7 +468,9 @@ WERROR DsCrackNameOneName(struct ldb_context *sam_ctx, TALLOC_CTX *mem_ctx,
/* TODO: - fill the correct names in all cases!
* - handle format_flags
*/
-
+ if (format_desired == DRSUAPI_DS_NAME_FORMAT_UNKNOWN) {
+ return WERR_OK;
+ }
/* here we need to set the domain_filter and/or the result_filter */
switch (format_offered) {
case DRSUAPI_DS_NAME_FORMAT_UNKNOWN:
@@ -488,7 +490,10 @@ WERROR DsCrackNameOneName(struct ldb_context *sam_ctx, TALLOC_CTX *mem_ctx,
if (!W_ERROR_IS_OK(werr)) {
return werr;
}
- if (info1->status != DRSUAPI_DS_NAME_STATUS_NOT_FOUND) {
+ if (info1->status != DRSUAPI_DS_NAME_STATUS_NOT_FOUND &&
+ (formats[i] != DRSUAPI_DS_NAME_FORMAT_CANONICAL ||
+ info1->status != DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR))
+ {
return werr;
}
}
@@ -574,8 +579,7 @@ WERROR DsCrackNameOneName(struct ldb_context *sam_ctx, TALLOC_CTX *mem_ctx,
}
domain_filter = talloc_asprintf(mem_ctx,
- "(&(objectClass=crossRef)(|(dnsRoot=%s)(netbiosName=%s))(systemFlags:%s:=%u))",
- ldb_binary_encode_string(mem_ctx, domain),
+ "(&(objectClass=crossRef)(netbiosName=%s)(systemFlags:%s:=%u))",
ldb_binary_encode_string(mem_ctx, domain),
LDB_OID_COMPARATOR_AND,
SYSTEM_FLAG_CR_NTDS_DOMAIN);
@@ -931,9 +935,25 @@ static WERROR DsCrackNameOneFilter(struct ldb_context *sam_ctx, TALLOC_CTX *mem_
int ret;
struct ldb_result *res;
uint32_t dsdb_flags = 0;
- struct ldb_dn *real_search_dn;
+ struct ldb_dn *real_search_dn = NULL;
+ info1->status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND;
- if (domain_res) {
+ /*
+ * From 4.1.4.2.11 of MS-DRSR
+ * if DS_NAME_FLAG_GCVERIFY in flags then
+ * rt := select all O from all
+ * where attrValue in GetAttrVals(O, att, false)
+ * else
+ * rt := select all O from subtree DefaultNC()
+ * where attrValue in GetAttrVals(O, att, false)
+ * endif
+ * return rt
+ */
+ if (format_flags & DRSUAPI_DS_NAME_FLAG_GCVERIFY ||
+ format_offered == DRSUAPI_DS_NAME_FORMAT_GUID)
+ {
+ dsdb_flags = DSDB_SEARCH_SEARCH_ALL_PARTITIONS;
+ } else if (domain_res) {
if (!search_dn) {
struct ldb_dn *tmp_dn = samdb_result_dn(sam_ctx, mem_ctx, domain_res->msgs[0], "ncName", NULL);
real_search_dn = tmp_dn;
@@ -941,13 +961,11 @@ static WERROR DsCrackNameOneFilter(struct ldb_context *sam_ctx, TALLOC_CTX *mem_
real_search_dn = search_dn;
}
} else {
- dsdb_flags = DSDB_SEARCH_SEARCH_ALL_PARTITIONS;
- real_search_dn = NULL;
+ real_search_dn = ldb_get_default_basedn(sam_ctx);
}
if (format_desired == DRSUAPI_DS_NAME_FORMAT_GUID){
dsdb_flags |= DSDB_SEARCH_SHOW_RECYCLED;
}
-
/* search with the 'phantom root' flag */
ret = dsdb_search(sam_ctx, mem_ctx, &res,
real_search_dn,
diff --git a/source4/rpc_server/drsuapi/dcesrv_drsuapi.c b/source4/rpc_server/drsuapi/dcesrv_drsuapi.c
index 2ce6beb..879f63f 100644
--- a/source4/rpc_server/drsuapi/dcesrv_drsuapi.c
+++ b/source4/rpc_server/drsuapi/dcesrv_drsuapi.c
@@ -430,21 +430,21 @@ static WERROR dcesrv_drsuapi_DsCrackNames(struct dcesrv_call_state *dce_call, TA
switch (r->in.level) {
case 1: {
switch(r->in.req->req1.format_offered){
- case DRSUAPI_DS_NAME_FORMAT_UPN_AND_ALTSECID:
case DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN_EX:
- case DRSUAPI_DS_NAME_FORMAT_LIST_GLOBAL_CATALOG_SERVERS:
- case DRSUAPI_DS_NAME_FORMAT_UPN_FOR_LOGON:
- case DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_WITH_DCS_IN_SITE:
+ case DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN:
case DRSUAPI_DS_NAME_FORMAT_STRING_SID_NAME:
case DRSUAPI_DS_NAME_FORMAT_ALT_SECURITY_IDENTITIES_NAME:
+ case DRSUAPI_DS_NAME_FORMAT_MAP_SCHEMA_GUID:
case DRSUAPI_DS_NAME_FORMAT_LIST_NCS:
case DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS:
- case DRSUAPI_DS_NAME_FORMAT_MAP_SCHEMA_GUID:
- case DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN:
+ case DRSUAPI_DS_NAME_FORMAT_LIST_GLOBAL_CATALOG_SERVERS:
+ case DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_WITH_DCS_IN_SITE:
case DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_FOR_DOMAIN_IN_SITE:
case DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS_IN_SITE:
case DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_IN_SITE:
case DRSUAPI_DS_NAME_FORMAT_LIST_SITES:
+ case DRSUAPI_DS_NAME_FORMAT_UPN_AND_ALTSECID:
+ case DRSUAPI_DS_NAME_FORMAT_UPN_FOR_LOGON:
DEBUG(0, ("DsCrackNames: Unsupported operation requested: %X",
r->in.req->req1.format_offered));
return WERR_OK;
diff --git a/source4/rpc_server/drsuapi/updaterefs.c b/source4/rpc_server/drsuapi/updaterefs.c
index 14bd3f6..ae87117 100644
--- a/source4/rpc_server/drsuapi/updaterefs.c
+++ b/source4/rpc_server/drsuapi/updaterefs.c
@@ -160,6 +160,7 @@ WERROR drsuapi_UpdateRefs(struct drsuapi_bind_state *b_state, TALLOC_CTX *mem_ct
return WERR_DS_DRA_INVALID_PARAMETER;
}
+ /* FIXME it seems that we should check the length of the stuff too*/
if (req->dest_dsa_dns_name == NULL) {
return WERR_DS_DRA_INVALID_PARAMETER;
}
diff --git a/source4/rpc_server/netlogon/dcerpc_netlogon.c b/source4/rpc_server/netlogon/dcerpc_netlogon.c
index 5cc3b34..de8f0e5 100644
--- a/source4/rpc_server/netlogon/dcerpc_netlogon.c
+++ b/source4/rpc_server/netlogon/dcerpc_netlogon.c
@@ -1840,7 +1840,9 @@ static WERROR dcesrv_netr_DsRGetDCNameEx2(struct dcesrv_call_state *dce_call,
info = talloc(mem_ctx, struct netr_DsRGetDCNameInfo);
W_ERROR_HAVE_NO_MEMORY(info);
- info->dc_unc = talloc_asprintf(mem_ctx, "\\\\%s", dc_name);
+ info->dc_unc = talloc_asprintf(mem_ctx, "%s%s",
+ dc_name[0] == '\\'? "\\\\":"",
+ talloc_strdup(mem_ctx, dc_name));
W_ERROR_HAVE_NO_MEMORY(info->dc_unc);
load_interface_list(mem_ctx, lp_ctx, &ifaces);
@@ -1855,6 +1857,15 @@ static WERROR dcesrv_netr_DsRGetDCNameEx2(struct dcesrv_call_state *dce_call,
info->domain_name = domain_name;
info->forest_name = response.data.nt5_ex.forest;
info->dc_flags = response.data.nt5_ex.server_type;
+ if (r->in.flags & DS_RETURN_DNS_NAME) {
+ /* As MS-NRPC.pdf in 2.2.1.2.1 the DS_DNS_CONTROLLER flag should be
+ * returned if we are returning info->dc_unc containing a FQDN.
+ * This attribute is called DomainControllerName in the specs,
+ * it seems that we decide to return FQDN or netbios depending on
+ * DS_RETURN_DNS_NAME.
+ */
+ info->dc_flags |= DS_DNS_CONTROLLER;
+ }
info->dc_site_name = response.data.nt5_ex.server_site;
info->client_site_name = response.data.nt5_ex.client_site;
diff --git a/source4/torture/rpc/drsuapi.c b/source4/torture/rpc/drsuapi.c
index 86b0d32..1d535ac 100644
--- a/source4/torture/rpc/drsuapi.c
+++ b/source4/torture/rpc/drsuapi.c
@@ -774,7 +774,9 @@ bool torture_rpc_drsuapi_get_dcinfo(struct torture_context *torture,
*/
bool torture_drsuapi_tcase_setup_common(struct torture_context *tctx, struct DsPrivate *priv)
{
- NTSTATUS status;
+ NTSTATUS status;
+ int rnd = rand() % 1000;
+ char *name = talloc_asprintf(tctx, "%s%d", TEST_MACHINE_NAME, rnd);
struct cli_credentials *machine_credentials;
torture_assert(tctx, priv, "Invalid argument");
@@ -785,8 +787,8 @@ bool torture_drsuapi_tcase_setup_common(struct torture_context *tctx, struct DsP
&ndr_table_drsuapi);
torture_assert(tctx, NT_STATUS_IS_OK(status), "Unable to connect to DRSUAPI pipe");
- torture_comment(tctx, "About to join domain\n");
- priv->join = torture_join_domain(tctx, TEST_MACHINE_NAME, ACB_SVRTRUST,
+ torture_comment(tctx, "About to join domain with name %s\n", name);
+ priv->join = torture_join_domain(tctx, name, ACB_SVRTRUST,
&machine_credentials);
torture_assert(tctx, priv->join, "Failed to join as BDC");
@@ -848,7 +850,6 @@ void torture_rpc_drsuapi_tcase(struct torture_suite *suite)
{
typedef bool (*run_func) (struct torture_context *test, void *tcase_data);
- struct torture_test *test;
struct torture_tcase *tcase = torture_suite_add_tcase(suite, "drsuapi");
torture_tcase_set_fixture(tcase, torture_drsuapi_tcase_setup,
@@ -858,17 +859,17 @@ void torture_rpc_drsuapi_tcase(struct torture_suite *suite)
test = torture_tcase_add_simple_test(tcase, "QuerySitesByCost", (run_func)test_QuerySitesByCost);
#endif
- test = torture_tcase_add_simple_test(tcase, "DsGetDomainControllerInfo", (run_func)test_DsGetDomainControllerInfo);
+ torture_tcase_add_simple_test(tcase, "DsGetDomainControllerInfo", (run_func)test_DsGetDomainControllerInfo);
- test = torture_tcase_add_simple_test(tcase, "DsCrackNames", (run_func)test_DsCrackNames);
+ torture_tcase_add_simple_test(tcase, "DsCrackNames", (run_func)test_DsCrackNames);
- test = torture_tcase_add_simple_test(tcase, "DsWriteAccountSpn", (run_func)test_DsWriteAccountSpn);
+ torture_tcase_add_simple_test(tcase, "DsWriteAccountSpn", (run_func)test_DsWriteAccountSpn);
- test = torture_tcase_add_simple_test(tcase, "DsReplicaGetInfo", (run_func)test_DsReplicaGetInfo);
+ torture_tcase_add_simple_test(tcase, "DsReplicaGetInfo", (run_func)test_DsReplicaGetInfo);
- test = torture_tcase_add_simple_test(tcase, "DsReplicaSync", (run_func)test_DsReplicaSync);
+ torture_tcase_add_simple_test(tcase, "DsReplicaSync", (run_func)test_DsReplicaSync);
- test = torture_tcase_add_simple_test(tcase, "DsReplicaUpdateRefs", (run_func)test_DsReplicaUpdateRefs);
+ torture_tcase_add_simple_test(tcase, "DsReplicaUpdateRefs", (run_func)test_DsReplicaUpdateRefs);
- test = torture_tcase_add_simple_test(tcase, "DsGetNCChanges", (run_func)test_DsGetNCChanges);
+ torture_tcase_add_simple_test(tcase, "DsGetNCChanges", (run_func)test_DsGetNCChanges);
}
diff --git a/source4/torture/rpc/drsuapi_cracknames.c b/source4/torture/rpc/drsuapi_cracknames.c
index 465f6db..ac39d1d 100644
--- a/source4/torture/rpc/drsuapi_cracknames.c
+++ b/source4/torture/rpc/drsuapi_cracknames.c
@@ -199,6 +199,10 @@ static bool test_DsCrackNamesMatrix(struct torture_context *tctx,
for (i = 0; i < ARRAY_SIZE(formats); i++) {
for (j = 0; j < ARRAY_SIZE(formats); j++) {
+ torture_comment(tctx, "Converting %s (format %d)"
+ " to %d gave %s\n",
+ n_from[i], formats[i],
+ formats[j], n_matrix[i][j]);
if (n_matrix[i][j] == n_from[j]) {
/* We don't have a from name for these yet (and we can't map to them to find it out) */
--
Samba Shared Repository
More information about the samba-cvs
mailing list