[SCM] Samba Shared Repository - branch master updated

Matthias Dieter Wallnöfer mdw at samba.org
Sat Nov 27 08:04:13 MST 2010


The branch, master has been updated
       via  258dc02 s4:role transfer - use always type "enum drepl_role_master" for role specifications
       via  d613f91 s4:samba3sam LDB module - correctly print out an unsigned value
       via  2163c7a s4:samba3sam LDB module - make the "pw_uid"/"pw_gid" conversion a bit clearer
       via  e9f019e s4:dsdb tests - make use of "ldb.get_domain_sid()"
       via  7545b5b s4:dsdb/tests/python/sam.py - we don't need the domain SID
       via  02addbc s4:torture/drs/python/fsmo.py - fix comments and an error message
      from  847b909 s4-samba-tool: removed old C implementation of samba-tool drs

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


- Log -----------------------------------------------------------------
commit 258dc02a9db9280b43d336eecf4a63df790c1945
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Sat Nov 27 14:40:53 2010 +0100

    s4:role transfer - use always type "enum drepl_role_master" for role specifications
    
    Autobuild-User: Matthias Dieter Wallnöfer <mdw at samba.org>
    Autobuild-Date: Sat Nov 27 16:03:43 CET 2010 on sn-devel-104

commit d613f91a74be13cde375ad742b9dab3af2a75935
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Sat Nov 27 14:17:53 2010 +0100

    s4:samba3sam LDB module - correctly print out an unsigned value
    
    Here we can print it out as unsigned since we are generating a string
    attribute.

commit 2163c7a2985b750218661552760400ce485bf894
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Sat Nov 27 14:07:31 2010 +0100

    s4:samba3sam LDB module - make the "pw_uid"/"pw_gid" conversion a bit clearer
    
    And remove the "long" specifier since at least on the major platforms
    (Linux, BSD and Solaris) these types are defined as "uint32_t".

commit e9f019e28c267b35c1f5e5a232751c2ca920e1e5
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Sat Nov 27 12:32:22 2010 +0100

    s4:dsdb tests - make use of "ldb.get_domain_sid()"

commit 7545b5b3db77d3696fb725b1655b82c164647289
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Sat Nov 27 12:21:59 2010 +0100

    s4:dsdb/tests/python/sam.py - we don't need the domain SID

commit 02addbc40d0812d6398d4a9388c5879ae5bae284
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Sat Nov 27 12:08:03 2010 +0100

    s4:torture/drs/python/fsmo.py - fix comments and an error message

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

Summary of changes:
 source4/dsdb/repl/drepl_fsmo.c              |    5 ++---
 source4/dsdb/repl/drepl_service.h           |    2 ++
 source4/dsdb/samdb/ldb_modules/rootdse.c    |    2 +-
 source4/dsdb/samdb/ldb_modules/samba3sam.c  |   11 ++++++++---
 source4/dsdb/tests/python/acl.py            |    6 +-----
 source4/dsdb/tests/python/ldap.py           |    6 +-----
 source4/dsdb/tests/python/ldap_syntaxes.py  |    9 ++-------
 source4/dsdb/tests/python/sam.py            |    5 -----
 source4/dsdb/tests/python/sec_descriptor.py |    6 +-----
 source4/librpc/idl/irpc.idl                 |    2 +-
 source4/torture/drs/python/fsmo.py          |    6 +++---
 11 files changed, 22 insertions(+), 38 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/repl/drepl_fsmo.c b/source4/dsdb/repl/drepl_fsmo.c
index ad655f7..98bc1c1 100644
--- a/source4/dsdb/repl/drepl_fsmo.c
+++ b/source4/dsdb/repl/drepl_fsmo.c
@@ -30,8 +30,7 @@
 #include "smbd/service.h"
 #include "dsdb/repl/drepl_service.h"
 #include "param/param.h"
-#include "lib/messaging/irpc.h"
-#include "librpc/gen_ndr/ndr_irpc.h"
+#include "librpc/gen_ndr/irpc.h"
 
 static void drepl_role_callback(struct dreplsrv_service *service,
 				WERROR werr,
@@ -59,7 +58,7 @@ static bool fsmo_master_cmp(struct ldb_dn *ntds_dn, struct ldb_dn *role_owner_dn
   see which role is we are asked to assume, initialize data and send request
  */
 WERROR dreplsrv_fsmo_role_check(struct dreplsrv_service *service,
-				uint32_t role)
+				enum drepl_role_master role)
 {
 	struct ldb_dn *role_owner_dn, *fsmo_role_dn, *ntds_dn;
 	TALLOC_CTX *tmp_ctx = talloc_new(service);
diff --git a/source4/dsdb/repl/drepl_service.h b/source4/dsdb/repl/drepl_service.h
index 48b084f..ffff0bf 100644
--- a/source4/dsdb/repl/drepl_service.h
+++ b/source4/dsdb/repl/drepl_service.h
@@ -233,6 +233,8 @@ struct dreplsrv_service {
 	bool am_rodc;
 };
 
+enum drepl_role_master;
+
 #include "dsdb/repl/drepl_out_helpers.h"
 #include "dsdb/repl/drepl_service_proto.h"
 
diff --git a/source4/dsdb/samdb/ldb_modules/rootdse.c b/source4/dsdb/samdb/ldb_modules/rootdse.c
index 5eac74f..e7ea765 100644
--- a/source4/dsdb/samdb/ldb_modules/rootdse.c
+++ b/source4/dsdb/samdb/ldb_modules/rootdse.c
@@ -1154,7 +1154,7 @@ static int rootdse_add(struct ldb_module *module, struct ldb_request *req)
 
 static int rootdse_become_master(struct ldb_module *module,
 				 struct ldb_request *req,
-				 uint32_t role)
+				 enum drepl_role_master role)
 {
 	struct drepl_takeFSMORole r;
 	struct messaging_context *msg;
diff --git a/source4/dsdb/samdb/ldb_modules/samba3sam.c b/source4/dsdb/samdb/ldb_modules/samba3sam.c
index 318d605..e9830c9 100644
--- a/source4/dsdb/samdb/ldb_modules/samba3sam.c
+++ b/source4/dsdb/samdb/ldb_modules/samba3sam.c
@@ -106,7 +106,8 @@ static void generate_sambaPrimaryGroupSID(struct ldb_module *module, const char
 
 	sidstring = dom_sid_string(remote_mp, sid);
 	talloc_free(sid);
-	ldb_msg_add_fmt(remote_mp, "sambaPrimaryGroupSID", "%s-%d", sidstring, ldb_msg_find_attr_as_uint(local, "primaryGroupID", 0));
+	ldb_msg_add_fmt(remote_mp, "sambaPrimaryGroupSID", "%s-%u", sidstring,
+			ldb_msg_find_attr_as_uint(local, "primaryGroupID", 0));
 	talloc_free(sidstring);
 }
 
@@ -151,7 +152,9 @@ static struct ldb_val lookup_gid(struct ldb_module *module, TALLOC_CTX *ctx, con
 		return *talloc_zero(ctx, struct ldb_val);
 	}
 
-	retval.data = (uint8_t *)talloc_asprintf(ctx, "%ld", (unsigned long)pwd->pw_gid);
+	/* "pw_gid" is per POSIX definition "unsigned".
+	 * But write it out as "signed" for LDAP compliance. */
+	retval.data = (uint8_t *)talloc_asprintf(ctx, "%d", (int) pwd->pw_gid);
 	retval.length = strlen((char *)retval.data);
 
 	return retval;
@@ -168,7 +171,9 @@ static struct ldb_val lookup_uid(struct ldb_module *module, TALLOC_CTX *ctx, con
 		return *talloc_zero(ctx, struct ldb_val);
 	}
 
-	retval.data = (uint8_t *)talloc_asprintf(ctx, "%ld", (unsigned long)pwd->pw_uid);
+	/* "pw_uid" is per POSIX definition "unsigned".
+	 * But write it out as "signed" for LDAP compliance. */
+	retval.data = (uint8_t *)talloc_asprintf(ctx, "%d", (int) pwd->pw_uid);
 	retval.length = strlen((char *)retval.data);
 
 	return retval;
diff --git a/source4/dsdb/tests/python/acl.py b/source4/dsdb/tests/python/acl.py
index 9a0e754..c540e7e 100755
--- a/source4/dsdb/tests/python/acl.py
+++ b/source4/dsdb/tests/python/acl.py
@@ -59,15 +59,11 @@ creds.set_gensec_features(creds.get_gensec_features() | gensec.FEATURE_SEAL)
 
 class AclTests(samba.tests.TestCase):
 
-    def find_domain_sid(self, ldb):
-        res = ldb.search(base=self.base_dn, expression="(objectClass=*)", scope=SCOPE_BASE)
-        return ndr_unpack(security.dom_sid,res[0]["objectSid"][0])
-
     def setUp(self):
         super(AclTests, self).setUp()
         self.ldb_admin = ldb
         self.base_dn = ldb.domain_dn()
-        self.domain_sid = self.find_domain_sid(self.ldb_admin)
+        self.domain_sid = security.dom_sid(ldb.get_domain_sid())
         self.user_pass = "samba123@"
         self.configuration_dn = self.ldb_admin.get_config_basedn().get_linearized()
         print "baseDN: %s" % self.base_dn
diff --git a/source4/dsdb/tests/python/ldap.py b/source4/dsdb/tests/python/ldap.py
index f11176b..f23de8d 100755
--- a/source4/dsdb/tests/python/ldap.py
+++ b/source4/dsdb/tests/python/ldap.py
@@ -62,10 +62,6 @@ creds = credopts.get_credentials(lp)
 
 class BasicTests(unittest.TestCase):
 
-    def find_domain_sid(self):
-        res = self.ldb.search(base=self.base_dn, expression="(objectClass=*)", scope=SCOPE_BASE)
-        return ndr_unpack( security.dom_sid,res[0]["objectSid"][0])
-
     def setUp(self):
         super(BasicTests, self).setUp()
         self.ldb = ldb
@@ -73,7 +69,7 @@ class BasicTests(unittest.TestCase):
         self.base_dn = ldb.domain_dn()
         self.configuration_dn = ldb.get_config_basedn().get_linearized()
         self.schema_dn = ldb.get_schema_basedn().get_linearized()
-        self.domain_sid = self.find_domain_sid()
+        self.domain_sid = security.dom_sid(ldb.get_domain_sid())
 
         print "baseDN: %s\n" % self.base_dn
 
diff --git a/source4/dsdb/tests/python/ldap_syntaxes.py b/source4/dsdb/tests/python/ldap_syntaxes.py
index f1f30c7..54198d7 100644
--- a/source4/dsdb/tests/python/ldap_syntaxes.py
+++ b/source4/dsdb/tests/python/ldap_syntaxes.py
@@ -51,10 +51,6 @@ creds = credopts.get_credentials(lp)
 
 class SyntaxTests(unittest.TestCase):
 
-    def _find_domain_sid(self):
-        res = self.ldb.search(base=self.base_dn, expression="(objectClass=*)", scope=SCOPE_BASE)
-        return ndr_unpack( security.dom_sid,res[0]["objectSid"][0])
-
     def setUp(self):
         super(SyntaxTests, self).setUp()
         self.ldb = ldb
@@ -62,7 +58,6 @@ class SyntaxTests(unittest.TestCase):
         self.schema_dn = ldb.get_schema_basedn().get_linearized()
         self._setup_dn_string_test()
         self._setup_dn_binary_test()
-        self.domain_sid = self._find_domain_sid()
 
     def _setup_dn_string_test(self):
         """Testing DN+String syntax"""
@@ -279,7 +274,7 @@ name: """ + object_name + """
         # add object with SID instead of DN
         object_name4 = "obj-DN-String4" + time.strftime("%s", time.gmtime())
         ldif = self._get_object_ldif(object_name4, self.dn_string_class_name, self.dn_string_class_ldap_display_name,
-                               self.dn_string_attribute, ": S:5:ABCDE:<SID=%s>" % self.domain_sid)
+                               self.dn_string_attribute, ": S:5:ABCDE:<SID=%s>" % self.ldb.get_domain_sid())
         try:
             self.ldb.add_ldif(ldif)
         except LdbError, (num, _):
@@ -365,7 +360,7 @@ name: """ + object_name + """
         # add object with SID instead of DN
         object_name4 = "obj-DN-Binary4" + time.strftime("%s", time.gmtime())
         ldif = self._get_object_ldif(object_name4, self.dn_binary_class_name, self.dn_binary_class_ldap_display_name,
-                               self.dn_binary_attribute, ": B:4:1234:<SID=%s>" % self.domain_sid)
+                               self.dn_binary_attribute, ": B:4:1234:<SID=%s>" % self.ldb.get_domain_sid())
         try:
             self.ldb.add_ldif(ldif)
         except LdbError, (num, _):
diff --git a/source4/dsdb/tests/python/sam.py b/source4/dsdb/tests/python/sam.py
index 836015b..9e50c62 100755
--- a/source4/dsdb/tests/python/sam.py
+++ b/source4/dsdb/tests/python/sam.py
@@ -66,15 +66,10 @@ creds = credopts.get_credentials(lp)
 
 class SamTests(unittest.TestCase):
 
-    def find_domain_sid(self):
-        res = self.ldb.search(base=self.base_dn, expression="(objectClass=*)", scope=SCOPE_BASE)
-        return ndr_unpack( security.dom_sid,res[0]["objectSid"][0])
-
     def setUp(self):
         super(SamTests, self).setUp()
         self.ldb = ldb
         self.base_dn = ldb.domain_dn()
-        self.domain_sid = self.find_domain_sid()
 
         print "baseDN: %s\n" % self.base_dn
 
diff --git a/source4/dsdb/tests/python/sec_descriptor.py b/source4/dsdb/tests/python/sec_descriptor.py
index 54e2444..17fed0e 100755
--- a/source4/dsdb/tests/python/sec_descriptor.py
+++ b/source4/dsdb/tests/python/sec_descriptor.py
@@ -60,10 +60,6 @@ creds.set_gensec_features(creds.get_gensec_features() | gensec.FEATURE_SEAL)
 
 class DescriptorTests(samba.tests.TestCase):
 
-    def find_domain_sid(self, ldb):
-        res = ldb.search(base=self.base_dn, expression="(objectClass=*)", scope=SCOPE_BASE)
-        return ndr_unpack( security.dom_sid,res[0]["objectSid"][0])
-
     def get_users_domain_dn(self, name):
         return "CN=%s,CN=Users,%s" % (name, self.base_dn)
 
@@ -188,7 +184,7 @@ showInAdvancedViewOnly: TRUE
         self.base_dn = ldb.domain_dn()
         self.configuration_dn = self.ldb_admin.get_config_basedn().get_linearized()
         self.schema_dn = self.ldb_admin.get_schema_basedn().get_linearized()
-        self.domain_sid = self.find_domain_sid(self.ldb_admin)
+        self.domain_sid = security.dom_sid(self.ldb_admin.get_domain_sid())
         print "baseDN: %s" % self.base_dn
 
     ################################################################################################
diff --git a/source4/librpc/idl/irpc.idl b/source4/librpc/idl/irpc.idl
index 334c102..ed331c7 100644
--- a/source4/librpc/idl/irpc.idl
+++ b/source4/librpc/idl/irpc.idl
@@ -176,7 +176,7 @@ import "misc.idl", "security.idl", "nbt.idl", "netlogon.idl";
 	} drepl_role_master;
 
 	WERROR drepl_takeFSMORole(
-		[in] uint32 role
+		[in] drepl_role_master role
 		);
 
 	/*
diff --git a/source4/torture/drs/python/fsmo.py b/source4/torture/drs/python/fsmo.py
index 067ee2a..30120cc 100644
--- a/source4/torture/drs/python/fsmo.py
+++ b/source4/torture/drs/python/fsmo.py
@@ -101,7 +101,7 @@ class DrsFsmoTestCase(samba.tests.TestCase):
         cmd_line = "%s fsmo transfer --role=%s --host=ldap://%s:389 %s" % (net_cmd, role, DC,
                                                                            cmd_line_auth)
         ret = os.system(cmd_line)
-        self.assertEquals(ret, 0, "Transferring schema to %s has failed!" % (DC))
+        self.assertEquals(ret, 0, "Transferring role %s to %s has failed!" % (role, DC))
         pass
 
     def _wait_for_role_transfer(self, ldb_dc, role_dn, master):
@@ -128,7 +128,7 @@ class DrsFsmoTestCase(samba.tests.TestCase):
     def _role_transfer(self, role, role_dn):
         """Triggers transfer of role from DC1 to DC2
            and vice versa so the role goes back to the original dc"""
-        # dc2 gets the schema master role from dc1
+        # dc2 gets the role from dc1
         print "Testing for %s role transfer from %s to %s" % (role, self.dnsname_dc1, self.dnsname_dc2)
 
         self._net_fsmo_role_transfer(DC=self.dnsname_dc2, role=role)
@@ -139,7 +139,7 @@ class DrsFsmoTestCase(samba.tests.TestCase):
         self.assertTrue(res,
                         "Transferring %s role to %s has failed, master is: %s!"%(role, self.dsServiceName_dc2, master))
 
-        # dc1 gets back the schema master role from dc2
+        # dc1 gets back the role from dc2
         print "Testing for %s role transfer from %s to %s" % (role, self.dnsname_dc2, self.dnsname_dc1)
         self._net_fsmo_role_transfer(DC=self.dnsname_dc1, role=role)
         # check if the role is transfered


-- 
Samba Shared Repository


More information about the samba-cvs mailing list