[SCM] Samba Shared Repository - branch master updated

Matthias Dieter Wallnöfer mdw at samba.org
Mon Sep 13 15:36:40 MDT 2010


The branch, master has been updated
       via  6e720ec s4:SID handling - always encode the SID using "ldap_encode_ndr_dom_sid" for LDAP filters
       via  a4b7fac s4:cosmetic - the SID attribute is called objectSid - not objectSID
       via  0a19290 testdata/samba3/provision_samba3sam.ldif - update also here the maximum domain controller functionality
      from  f1b21be param: Only include param_proto.h for Samba builds, provide those prototypes necessary for external users (OpenChange) manually.

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


- Log -----------------------------------------------------------------
commit 6e720ecd259742d274d6281088c5052070c955e6
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Mon Sep 13 22:41:06 2010 +0200

    s4:SID handling - always encode the SID using "ldap_encode_ndr_dom_sid" for LDAP filters
    
    This makes also lookups through special backends as "samba3sam" work.

commit a4b7fac86d6f348d785409555849449527e22e58
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Mon Sep 13 22:39:50 2010 +0200

    s4:cosmetic - the SID attribute is called objectSid - not objectSID

commit 0a19290ca7cb5531d71e65a37fd11276330b2a12
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Mon Sep 13 21:18:13 2010 +0200

    testdata/samba3/provision_samba3sam.ldif - update also here the maximum domain controller functionality
    
    And we do support also LDAPv2.

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

Summary of changes:
 source4/cldap_server/netlogon.c                  |    2 +-
 source4/dsdb/common/util.c                       |   10 +++++-----
 source4/dsdb/samdb/ldb_modules/extended_dn_out.c |   16 ++++++++--------
 source4/dsdb/samdb/ldb_modules/samba3sid.c       |    2 +-
 source4/dsdb/samdb/ldb_modules/samldb.c          |   20 ++++++++++----------
 source4/dsdb/schema/schema_init.c                |    2 +-
 source4/lib/policy/gp_ldap.c                     |    7 +++++--
 source4/ntp_signd/ntp_signd.c                    |    3 ++-
 testdata/samba3/provision_samba3sam.ldif         |    3 ++-
 9 files changed, 35 insertions(+), 30 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/cldap_server/netlogon.c b/source4/cldap_server/netlogon.c
index aa5533d..d1fde89 100644
--- a/source4/cldap_server/netlogon.c
+++ b/source4/cldap_server/netlogon.c
@@ -146,7 +146,7 @@ NTSTATUS fill_netlogon_samlogon_response(struct ldb_context *sam_ctx,
 			ret = ldb_search(sam_ctx, mem_ctx, &dom_res,
 						 NULL, LDB_SCOPE_SUBTREE, 
 						 dom_attrs, 
-						 "(&(objectCategory=DomainDNS)(objectSID=%s))", 
+						 "(&(objectCategory=DomainDNS)(objectSid=%s))",
 						 ldb_binary_encode(mem_ctx, sid_val));
 		}
 		
diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c
index c409adb..0e37108 100644
--- a/source4/dsdb/common/util.c
+++ b/source4/dsdb/common/util.c
@@ -2525,7 +2525,7 @@ int dsdb_find_sid_by_dn(struct ldb_context *ldb,
 {
 	int ret;
 	struct ldb_result *res;
-	const char *attrs[] = { "objectSID", NULL };
+	const char *attrs[] = { "objectSid", NULL };
 	TALLOC_CTX *tmp_ctx = talloc_new(ldb);
 	struct dom_sid *s;
 
@@ -2540,7 +2540,7 @@ int dsdb_find_sid_by_dn(struct ldb_context *ldb,
 		talloc_free(tmp_ctx);
 		return LDB_ERR_NO_SUCH_OBJECT;
 	}
-	s = samdb_result_dom_sid(tmp_ctx, res->msgs[0], "objectSID");
+	s = samdb_result_dom_sid(tmp_ctx, res->msgs[0], "objectSid");
 	if (s == NULL) {
 		talloc_free(tmp_ctx);
 		return LDB_ERR_NO_SUCH_OBJECT;
@@ -2560,7 +2560,7 @@ int dsdb_find_dn_by_sid(struct ldb_context *ldb,
 	int ret;
 	struct ldb_result *res;
 	const char *attrs[] = { NULL };
-	char *sid_str = dom_sid_string(mem_ctx, sid);
+	char *sid_str = ldap_encode_ndr_dom_sid(mem_ctx, sid);
 
 	if (!sid_str) {
 		return ldb_operr(ldb);
@@ -2570,7 +2570,7 @@ int dsdb_find_dn_by_sid(struct ldb_context *ldb,
 			  DSDB_SEARCH_SEARCH_ALL_PARTITIONS |
 			  DSDB_SEARCH_SHOW_EXTENDED_DN |
 			  DSDB_SEARCH_ONE_ONLY,
-			  "objectSID=%s", sid_str);
+			  "objectSid=%s", sid_str);
 	talloc_free(sid_str);
 	if (ret != LDB_SUCCESS) {
 		return ret;
@@ -3871,7 +3871,7 @@ int dsdb_validate_dsa_guid(struct ldb_context *ldb,
             - remove "NTDS Settings" component from DN
 	    - do a base search on that DN for serverReference with
 	      extended-dn enabled
-            - extract objectSID from resulting serverReference
+            - extract objectSid from resulting serverReference
               attribute
 	    - check this sid matches the sid argument
 	*/
diff --git a/source4/dsdb/samdb/ldb_modules/extended_dn_out.c b/source4/dsdb/samdb/ldb_modules/extended_dn_out.c
index 07c0bff..ad197b8 100644
--- a/source4/dsdb/samdb/ldb_modules/extended_dn_out.c
+++ b/source4/dsdb/samdb/ldb_modules/extended_dn_out.c
@@ -134,7 +134,7 @@ static int inject_extended_dn_out(struct ldb_reply *ares,
 	const DATA_BLOB *sid_blob;
 
 	guid_blob = ldb_msg_find_ldb_val(ares->message, "objectGUID");
-	sid_blob = ldb_msg_find_ldb_val(ares->message, "objectSID");
+	sid_blob = ldb_msg_find_ldb_val(ares->message, "objectSid");
 
 	if (!guid_blob) {
 		ldb_set_errstring(ldb, "Did not find objectGUID to inject into extended DN");
@@ -157,7 +157,7 @@ static int inject_extended_dn_out(struct ldb_reply *ares,
 	}
 
 	if (sid_blob && remove_sid) {
-		ldb_msg_remove_attr(ares->message, "objectSID");
+		ldb_msg_remove_attr(ares->message, "objectSid");
 	}
 
 	return LDB_SUCCESS;
@@ -207,9 +207,9 @@ static int handle_dereference_openldap(struct ldb_dn *dn,
 		ldb_dn_set_extended_component(dn, "GUID", &guid_blob);
 	}
 	
-	sid_blob = ldb_msg_find_ldb_val(&fake_msg, "objectSID");
+	sid_blob = ldb_msg_find_ldb_val(&fake_msg, "objectSid");
 	
-	/* Look for the objectSID */
+	/* Look for the objectSid */
 	if (sid_blob) {
 		ldb_dn_set_extended_component(dn, "SID", sid_blob);
 	}
@@ -261,7 +261,7 @@ static int handle_dereference_fds(struct ldb_dn *dn,
 		ldb_dn_set_extended_component(dn, "GUID", &guid_blob);
 	}
 	
-	/* Look for the objectSID */
+	/* Look for the objectSid */
 
 	sidBlob = ldb_msg_find_ldb_val(&fake_msg, "sambaSID");
 	if (sidBlob) {
@@ -610,7 +610,7 @@ static int extended_dn_out_search(struct ldb_module *module, struct ldb_request
 			if (! is_attr_in_list(req->op.search.attrs, "objectGUID")) {
 				ac->remove_guid = true;
 			}
-			if (! is_attr_in_list(req->op.search.attrs, "objectSID")) {
+			if (! is_attr_in_list(req->op.search.attrs, "objectSid")) {
 				ac->remove_sid = true;
 			}
 			if (ac->remove_guid || ac->remove_sid) {
@@ -624,7 +624,7 @@ static int extended_dn_out_search(struct ldb_module *module, struct ldb_request
 						return ldb_operr(ldb);
 				}
 				if (ac->remove_sid) {
-					if (!add_attrs(ac, &new_attrs, "objectSID"))
+					if (!add_attrs(ac, &new_attrs, "objectSid"))
 						return ldb_operr(ldb);
 				}
 				const_attrs = (const char * const *)new_attrs;
@@ -815,7 +815,7 @@ static int extended_dn_out_openldap_init(struct ldb_module *module)
 {
 	static const char *attrs[] = {
 		"entryUUID",
-		"objectSID",
+		"objectSid",
 		NULL
 	};
 
diff --git a/source4/dsdb/samdb/ldb_modules/samba3sid.c b/source4/dsdb/samdb/ldb_modules/samba3sid.c
index 9368e0d..ef14200 100644
--- a/source4/dsdb/samdb/ldb_modules/samba3sid.c
+++ b/source4/dsdb/samdb/ldb_modules/samba3sid.c
@@ -19,7 +19,7 @@
 */
 
 /*
-  add objectSID to users and groups using samba3 nextRid method
+  add objectSid to users and groups using samba3 nextRid method
  */
 
 #include "includes.h"
diff --git a/source4/dsdb/samdb/ldb_modules/samldb.c b/source4/dsdb/samdb/ldb_modules/samldb.c
index 7562122..dca6ece 100644
--- a/source4/dsdb/samdb/ldb_modules/samldb.c
+++ b/source4/dsdb/samdb/ldb_modules/samldb.c
@@ -276,8 +276,8 @@ static int samldb_check_primaryGroupID(struct samldb_ctx *ac)
 		return ldb_operr(ldb);
 	}
 
-	prim_group_dn = samdb_search_dn(ldb, ac, NULL, "(objectSID=%s)",
-					dom_sid_string(ac, sid));
+	prim_group_dn = samdb_search_dn(ldb, ac, NULL, "(objectSid=%s)",
+					ldap_encode_ndr_dom_sid(ac, sid));
 	if (prim_group_dn == NULL) {
 		ldb_asprintf_errstring(ldb,
 				       "Failed to find primary group with RID %u!",
@@ -799,7 +799,7 @@ static int samldb_fill_object(struct samldb_ctx *ac, const char *type)
 	lp_ctx = talloc_get_type(ldb_get_opaque(ldb, "loadparm"),
 		 struct loadparm_context);
 
-	/* don't allow objectSID to be specified without the RELAX control */
+	/* don't allow objectSid to be specified without the RELAX control */
 	sid = samdb_result_dom_sid(ac, ac->msg, "objectSid");
 	if (sid && !ldb_request_get_control(ac->req, LDB_CONTROL_RELAX_OID) &&
 	    !dsdb_module_am_system(ac->module)) {
@@ -929,8 +929,8 @@ static int samldb_prim_group_change(struct samldb_ctx *ac)
 		return ldb_operr(ldb);
 	}
 
-	prev_prim_group_dn = samdb_search_dn(ldb, ac, NULL, "(objectSID=%s)",
-					     dom_sid_string(ac, sid));
+	prev_prim_group_dn = samdb_search_dn(ldb, ac, NULL, "(objectSid=%s)",
+					     ldap_encode_ndr_dom_sid(ac, sid));
 	if (prev_prim_group_dn == NULL) {
 		return ldb_operr(ldb);
 	}
@@ -948,8 +948,8 @@ static int samldb_prim_group_change(struct samldb_ctx *ac)
 		return ldb_operr(ldb);
 	}
 
-	new_prim_group_dn = samdb_search_dn(ldb, ac, NULL, "(objectSID=%s)",
-					    dom_sid_string(ac, sid));
+	new_prim_group_dn = samdb_search_dn(ldb, ac, NULL, "(objectSid=%s)",
+					    ldap_encode_ndr_dom_sid(ac, sid));
 	if (new_prim_group_dn == NULL) {
 		/* Here we know if the specified new primary group candidate is
 		 * valid or not. */
@@ -1041,8 +1041,8 @@ static int samldb_member_check(struct samldb_ctx *ac)
 			return ldb_operr(ldb);
 		}
 
-		group_dn = samdb_search_dn(ldb, ac, NULL, "(objectSID=%s)",
-					   dom_sid_string(ac, sid));
+		group_dn = samdb_search_dn(ldb, ac, NULL, "(objectSid=%s)",
+					   ldap_encode_ndr_dom_sid(ac, sid));
 		if (group_dn == NULL) {
 			return ldb_operr(ldb);
 		}
@@ -1282,7 +1282,7 @@ static int samldb_prim_group_users_check(struct samldb_ctx *ac)
 	ldb = ldb_module_get_ctx(ac->module);
 
 	/* Finds out the SID/RID of the SAM object */
-	sid = samdb_search_dom_sid(ldb, ac, ac->req->op.del.dn, "objectSID",
+	sid = samdb_search_dom_sid(ldb, ac, ac->req->op.del.dn, "objectSid",
 				   NULL);
 	if (sid == NULL) {
 		/* No SID - it might not be a SAM object - therefore ok */
diff --git a/source4/dsdb/schema/schema_init.c b/source4/dsdb/schema/schema_init.c
index 7bcdf85..a95e7ec 100644
--- a/source4/dsdb/schema/schema_init.c
+++ b/source4/dsdb/schema/schema_init.c
@@ -392,7 +392,7 @@ WERROR dsdb_read_prefixes_from_ldb(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
  */
 static bool dsdb_schema_unique_attribute(const char *attr)
 {
-	const char *attrs[] = { "objectGUID", "objectSID" , NULL };
+	const char *attrs[] = { "objectGUID", "objectSid" , NULL };
 	unsigned int i;
 	for (i=0;attrs[i];i++) {
 		if (strcasecmp(attr, attrs[i]) == 0) {
diff --git a/source4/lib/policy/gp_ldap.c b/source4/lib/policy/gp_ldap.c
index 87fde9d..d612cf8 100644
--- a/source4/lib/policy/gp_ldap.c
+++ b/source4/lib/policy/gp_ldap.c
@@ -28,6 +28,7 @@
 #include "../librpc/gen_ndr/ndr_security.h"
 #include "../libcli/security/dom_sid.h"
 #include "libcli/security/security.h"
+#include "libcli/ldap/ldap_ndr.h"
 #include "../lib/talloc/talloc.h"
 #include "lib/policy/policy.h"
 
@@ -425,7 +426,7 @@ NTSTATUS gp_list_gpos(struct gp_context *gp_ctx, struct security_token *token, c
 	TALLOC_CTX *mem_ctx;
 	const char **gpos;
 	struct ldb_result *result;
-	const char *sid;
+	char *sid;
 	struct ldb_dn *dn;
 	struct ldb_message_element *element;
 	bool inherit;
@@ -443,7 +444,9 @@ NTSTATUS gp_list_gpos(struct gp_context *gp_ctx, struct security_token *token, c
 	mem_ctx = talloc_new(gp_ctx);
 	NT_STATUS_HAVE_NO_MEMORY(mem_ctx);
 
-	sid = dom_sid_string(mem_ctx, &token->sids[PRIMARY_USER_SID_INDEX]);
+	sid = ldap_encode_ndr_dom_sid(mem_ctx,
+				      &token->sids[PRIMARY_USER_SID_INDEX]);
+	NT_STATUS_HAVE_NO_MEMORY(sid);
 
 	/* Find the user DN and objectclass via the sid from the security token */
 	rv = ldb_search(gp_ctx->ldb_ctx,
diff --git a/source4/ntp_signd/ntp_signd.c b/source4/ntp_signd/ntp_signd.c
index 029071e..0147c12 100644
--- a/source4/ntp_signd/ntp_signd.c
+++ b/source4/ntp_signd/ntp_signd.c
@@ -34,6 +34,7 @@
 #include "dsdb/samdb/samdb.h"
 #include "auth/auth.h"
 #include "libcli/security/security.h"
+#include "libcli/ldap/ldap_ndr.h"
 #include "lib/ldb/include/ldb.h"
 #include "lib/ldb/include/ldb_errors.h"
 #include "../lib/crypto/md5.h"
@@ -164,7 +165,7 @@ static NTSTATUS ntp_signd_process(struct ntp_signd_connection *ntp_signd_conn,
 				 LDB_SCOPE_SUBTREE,
 				 attrs,
 				 "(&(objectSid=%s)(objectClass=user))",
-				 dom_sid_string(mem_ctx, sid));
+				 ldap_encode_ndr_dom_sid(mem_ctx, sid));
 	if (ret != LDB_SUCCESS) {
 		DEBUG(2, ("Failed to search for SID %s in SAM for NTP signing: "
 			  "%s\n",
diff --git a/testdata/samba3/provision_samba3sam.ldif b/testdata/samba3/provision_samba3sam.ldif
index ddcb093..e196ca6 100644
--- a/testdata/samba3/provision_samba3sam.ldif
+++ b/testdata/samba3/provision_samba3sam.ldif
@@ -65,12 +65,13 @@ rootDomainNamingContext: ${BASEDN}
 configurationNamingContext: CN=Configuration,${BASEDN}
 schemaNamingContext: CN=Schema,CN=Configuration,${BASEDN}
 supportedLDAPVersion: 3
+supportedLDAPVersion: 2
 dnsHostName: ${DNSNAME}
 ldapServiceName: ${DNSDOMAIN}:${NETBIOSNAME}$@${REALM}
 serverName: CN=${NETBIOSNAME},CN=Servers,CN=Default-First-Site,CN=Sites,CN=Configuration,${BASEDN}
 domainFunctionality: 0
 forestFunctionality: 0
-domainControllerFunctionality: 2
+domainControllerFunctionality: 4
 isSynchronized: TRUE
 vendorName: Samba Team (http://samba.org)
 vendorVersion: ${VERSION}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list