[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Wed Jun 1 02:31:04 UTC 2016


The branch, master has been updated
       via  c0b17c3 ctdb:tests: timedout->timed out in 60.nfs.multi.004 test
       via  2fbf194 ctdb:eventscript: timedout->timed out in ctdb_event_script_args()
       via  b360c72 ctdb:banning: timedout->timed out in dbg messages in ctdb_ban_node_event()
       via  537d5fc ctdb:tcp: add missing spaces in debug message in ctdb_tcp_node_connect()
       via  b83a742 dsdb: Simplify acl_validate_spn_value
       via  f722185 s3-dfree-quota: remove special handling of EDQUOT
       via  b79ea7d s3-sysquotas: remove special handling of EDQUOT
       via  8078e5f vfs_fake_dfq - remove support for generating EDQUOT
       via  3d02489 selftest: remove test for EDQUOT returned from quota backend
       via  3b352d3 s3-sysquotas-linux: do not check for EDQUOT
       via  7583377 samba-too: Allow 'samba-tool fsmo' to cope with empty or missing fsmo roles
       via  4feffb6 s3/client/clitar.c: NULL-check correct variable
      from  af6bd05 rwrap: Update resolve_wrapper to version 1.1.4

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


- Log -----------------------------------------------------------------
commit c0b17c39000f601fa0aa9618b38b0991cf6535a2
Author: Michael Adam <obnox at samba.org>
Date:   Wed Jun 1 00:45:00 2016 +0200

    ctdb:tests: timedout->timed out in 60.nfs.multi.004 test
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Wed Jun  1 04:30:36 CEST 2016 on sn-devel-144

commit 2fbf19449e616d4d2489df3744982537c32c04f9
Author: Michael Adam <obnox at samba.org>
Date:   Wed Jun 1 00:44:21 2016 +0200

    ctdb:eventscript: timedout->timed out in ctdb_event_script_args()
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit b360c72eafa2df0726f966541668ca93f515271f
Author: Michael Adam <obnox at samba.org>
Date:   Wed Jun 1 00:43:38 2016 +0200

    ctdb:banning: timedout->timed out in dbg messages in ctdb_ban_node_event()
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 537d5fc50e692d04863a5995324ce74e71799b43
Author: Michael Adam <obnox at samba.org>
Date:   Thu May 26 13:40:38 2016 +0200

    ctdb:tcp: add missing spaces in debug message in ctdb_tcp_node_connect()
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit b83a742fed21969906bacfb6a98df82c3f49206c
Author: Volker Lendecke <vl at samba.org>
Date:   Fri May 27 10:40:55 2016 +0200

    dsdb: Simplify acl_validate_spn_value
    
    Avoid pointless "else" and fix indentation
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit f7221857236f5449424cc9cbb1ac92f59fa51bbc
Author: Uri Simchoni <uri at samba.org>
Date:   Fri May 27 22:15:46 2016 +0300

    s3-dfree-quota: remove special handling of EDQUOT
    
    It is no longer part of the quota VFS interface to return
    an EDQUOT error as an indication that getting quota succeeded
    but the user/group is over-quota. A VFS module implementing
    quota interface always returns 0 on success.
    
    Signed-off-by: Uri Simchoni <uri at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit b79ea7d3fb92ba95b3368604e79dbb26e88a4acf
Author: Uri Simchoni <uri at samba.org>
Date:   Fri May 27 21:51:38 2016 +0300

    s3-sysquotas: remove special handling of EDQUOT
    
    The sysquotas module has several supported backends for
    getting/setting user/group quota. This patch removes a check
    by the common code, to see if the backend has returned EDQUOT.
    
    Before this patch, it was OK for a backend to return with error
    and errno set to EDQUOT, and that meant success, but with a warning
    that the user/group is over quota. This is the system behavior on
    some Unices. This patch removes this from the protocol between the
    sysquota module and its backend drivers - it's the responsibility
    of the backend to return 0 iff it has fulfilled the request to get or
    set quota.
    
    Signed-off-by: Uri Simchoni <uri at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 8078e5f15bb23f95faa1c12cb7ddc8a62dcf2661
Author: Uri Simchoni <uri at samba.org>
Date:   Fri May 27 21:42:49 2016 +0300

    vfs_fake_dfq - remove support for generating EDQUOT
    
    Remove the option to retrieve valid user/group quota while
    returning -1 and EDQUOT errno - this is no longer part of the
    protocol between the quota backend and smbd.
    
    Signed-off-by: Uri Simchoni <uri at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 3d02489ff19184751d2213d419f85f48c6ad78e3
Author: Uri Simchoni <uri at samba.org>
Date:   Fri May 27 21:40:06 2016 +0300

    selftest: remove test for EDQUOT returned from quota backend
    
    Remove a test for special handling of EDQUOT errno when determining
    user/group quota - If the backend has obtained the quota settings it
    has to return 0 and not error.
    
    Signed-off-by: Uri Simchoni <uri at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 3b352d3526ae075db7a90733617010befdb3c746
Author: Uri Simchoni <uri at samba.org>
Date:   Thu May 26 10:24:58 2016 +0300

    s3-sysquotas-linux: do not check for EDQUOT
    
    When obtaining user/group quota, remove check for EDQUOT
    errno return. Apparently on some Unices, EDQUOT means that
    the get-quota function has succeeded, but the user/group is
    over-quota. Not so in Linux.
    
    Signed-off-by: Uri Simchoni <uri at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 7583377473ecd3d096c4f924e61a04a84be32a96
Author: Rowland Penny <rpenny at samba.org>
Date:   Thu Mar 31 12:07:00 2016 +0100

    samba-too: Allow 'samba-tool fsmo' to cope with empty or missing fsmo roles
    
    samba-too: Allow 'samba-tool fsmo' to cope with empty or missing fsmo roles
    
    Signed-off-by: Rowland Penny <rpenny at samba.org>
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>

commit 4feffb670720b7f378e5dc0914d928cf6e0ca6c6
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Tue May 31 15:44:27 2016 +0200

    s3/client/clitar.c: NULL-check correct variable
    
    `f` was checked again instead of `s`.
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: ndreas Schneider <asn at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

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

Summary of changes:
 ctdb/server/ctdb_banning.c                         |   4 +-
 ctdb/server/eventscript.c                          |   2 +-
 ctdb/tcp/tcp_connect.c                             |   4 +-
 ctdb/tests/eventscripts/60.nfs.multi.004.sh        |   2 +-
 python/samba/netcmd/fsmo.py                        | 233 ++++++++++++---------
 python/samba/tests/{auth.py => samba_tool/fsmo.py} |  22 +-
 source3/client/clitar.c                            |   2 +-
 source3/lib/sysquotas.c                            |  10 -
 source3/lib/sysquotas_linux.c                      |   6 +-
 source3/modules/vfs_fake_dfq.c                     |   5 -
 source3/script/tests/test_dfree_quota.sh           |   3 -
 source3/smbd/quotas.c                              |  22 +-
 source4/dsdb/samdb/ldb_modules/acl.c               |  10 +-
 source4/selftest/tests.py                          |   4 +
 14 files changed, 171 insertions(+), 158 deletions(-)
 copy python/samba/tests/{auth.py => samba_tool/fsmo.py} (59%)


Changeset truncated at 500 lines:

diff --git a/ctdb/server/ctdb_banning.c b/ctdb/server/ctdb_banning.c
index 56d3b29..a4c56f5 100644
--- a/ctdb/server/ctdb_banning.c
+++ b/ctdb/server/ctdb_banning.c
@@ -42,12 +42,12 @@ static void ctdb_ban_node_event(struct tevent_context *ev,
 
 	/* Make sure we were able to freeze databases during banning */
 	if (!ctdb_db_all_frozen(ctdb)) {
-		DEBUG(DEBUG_ERR, ("Banning timedout, but still unable to freeze databases\n"));
+		DEBUG(DEBUG_ERR, ("Banning timed out, but still unable to freeze databases\n"));
 		ctdb_ban_self(ctdb);
 		return;
 	}
 
-	DEBUG(DEBUG_ERR,("Banning timedout\n"));
+	DEBUG(DEBUG_ERR,("Banning timed out\n"));
 	ctdb->nodes[ctdb->pnn]->flags &= ~NODE_FLAGS_BANNED;
 
 	if (ctdb->banning_ctx != NULL) {
diff --git a/ctdb/server/eventscript.c b/ctdb/server/eventscript.c
index 5bc2ee8..17e4f35 100644
--- a/ctdb/server/eventscript.c
+++ b/ctdb/server/eventscript.c
@@ -906,7 +906,7 @@ int ctdb_event_script_args(struct ctdb_context *ctdb, enum ctdb_event call,
 	while (status.done == false && tevent_loop_once(ctdb->ev) == 0) /* noop */;
 
 	if (status.status == -ETIME) {
-		DEBUG(DEBUG_ERR, (__location__ " eventscript for '%s' timedout."
+		DEBUG(DEBUG_ERR, (__location__ " eventscript for '%s' timed out."
 				  " Immediately banning ourself for %d seconds\n",
 				  ctdb_eventscript_call_names[call],
 				  ctdb->tunable.recovery_ban_period));
diff --git a/ctdb/tcp/tcp_connect.c b/ctdb/tcp/tcp_connect.c
index fbb17c8..a56320d 100644
--- a/ctdb/tcp/tcp_connect.c
+++ b/ctdb/tcp/tcp_connect.c
@@ -145,7 +145,7 @@ void ctdb_tcp_node_connect(struct tevent_context *ev, struct tevent_timer *te,
 
 	tnode->fd = socket(sock_out.sa.sa_family, SOCK_STREAM, IPPROTO_TCP);
 	if (tnode->fd == -1) {
-		DEBUG(DEBUG_ERR, (__location__ "Failed to create socket\n"));
+		DEBUG(DEBUG_ERR, (__location__ " Failed to create socket\n"));
 		return;
 	}
 	set_nonblocking(tnode->fd);
@@ -185,7 +185,7 @@ void ctdb_tcp_node_connect(struct tevent_context *ev, struct tevent_timer *te,
 	}
 
 	if (bind(tnode->fd, (struct sockaddr *)&sock_in, sockin_size) == -1) {
-		DEBUG(DEBUG_ERR, (__location__ "Failed to bind socket %s(%d)\n",
+		DEBUG(DEBUG_ERR, (__location__ " Failed to bind socket %s(%d)\n",
 				  strerror(errno), errno));
 		close(tnode->fd);
 		return;
diff --git a/ctdb/tests/eventscripts/60.nfs.multi.004.sh b/ctdb/tests/eventscripts/60.nfs.multi.004.sh
index e07f8d5..d01f96b 100755
--- a/ctdb/tests/eventscripts/60.nfs.multi.004.sh
+++ b/ctdb/tests/eventscripts/60.nfs.multi.004.sh
@@ -2,7 +2,7 @@
 
 . "${TEST_SCRIPTS_DIR}/unit.sh"
 
-define_test "takeip, take reconfigure lock, monitor -> reconfigure, replay timedout"
+define_test "takeip, take reconfigure lock, monitor -> reconfigure, replay timed out"
 
 setup_nfs
 
diff --git a/python/samba/netcmd/fsmo.py b/python/samba/netcmd/fsmo.py
index 3904bcb..3d14939 100644
--- a/python/samba/netcmd/fsmo.py
+++ b/python/samba/netcmd/fsmo.py
@@ -31,17 +31,26 @@ from samba.netcmd import (
     )
 from samba.samdb import SamDB
 
-def get_fsmo_roleowner(samdb, roledn):
+def get_fsmo_roleowner(samdb, roledn, role):
     """Gets the owner of an FSMO role
 
     :param roledn: The DN of the FSMO role
+    :param role: The FSMO role
     """
-    res = samdb.search(roledn,
-                       scope=ldb.SCOPE_BASE, attrs=["fSMORoleOwner"])
-    if len(res) == 0:
-        raise CommandError('"%s" does not have a FSMO roleowner' % roledn)
-    master_owner = res[0]["fSMORoleOwner"][0]
-    return master_owner
+    try:
+        res = samdb.search(roledn,
+                           scope=ldb.SCOPE_BASE, attrs=["fSMORoleOwner"])
+    except LdbError, (num, msg):
+        if num == ldb.ERR_NO_SUCH_OBJECT:
+            return "* The '%s' role is not present in this domain" % role
+        raise
+
+    if 'fSMORoleOwner' in res[0]:
+        master_owner = res[0]["fSMORoleOwner"][0]
+        return master_owner
+    else:
+        master_owner = "* The '%s' role does not have an FSMO roleowner" % role
+        return master_owner
 
 
 def transfer_dns_role(outf, sambaopts, credopts, role, samdb):
@@ -54,23 +63,23 @@ def transfer_dns_role(outf, sambaopts, credopts, role, samdb):
         forest_dn = samba.dn_from_dns_name(samdb.forest_dns_name())
         role_object = "CN=Infrastructure,DC=ForestDnsZones," + forest_dn
 
-    try:
-        res = samdb.search(role_object,
-                           attrs=["fSMORoleOwner"],
-                           scope=ldb.SCOPE_BASE,
-                           controls=["extended_dn:1:1"])
+    res = samdb.search(role_object,
+                       attrs=["fSMORoleOwner"],
+                       scope=ldb.SCOPE_BASE,
+                       controls=["extended_dn:1:1"])
 
-        if 'fSMORoleOwner' in res[0]:
-            try:
-                master_guid = str(misc.GUID(ldb.Dn(samdb,
-                                  res[0]['fSMORoleOwner'][0])
-                                  .get_extended_component('GUID')))
-                master_owner = str(ldb.Dn(samdb, res[0]['fSMORoleOwner'][0]))
-            except LdbError, (num, msg):
-                raise CommandError("GUID not found in partition naming master DN %s : %s \n" %
-                                   (res[0]['fSMORoleOwner'][0], msg))
-    except LdbError, (num, msg):
-        raise CommandError("DNS partion %s not found : %s" % (role, msg))
+    if 'fSMORoleOwner' in res[0]:
+        try:
+            master_guid = str(misc.GUID(ldb.Dn(samdb,
+                              res[0]['fSMORoleOwner'][0])
+                              .get_extended_component('GUID')))
+            master_owner = str(ldb.Dn(samdb, res[0]['fSMORoleOwner'][0]))
+        except LdbError, (num, msg):
+            raise CommandError("No GUID found in naming master DN %s : %s \n" %
+                               (res[0]['fSMORoleOwner'][0], msg))
+    else:
+        outf.write("* The '%s' role does not have an FSMO roleowner\n" % role)
+        return False
 
     if role == "domaindns":
         master_dns_name = '%s._msdcs.%s' % (master_guid,
@@ -150,12 +159,12 @@ def transfer_role(outf, role, samdb):
     m = ldb.Message()
     m.dn = ldb.Dn(samdb, "")
     if role == "rid":
-        master_owner = get_fsmo_roleowner(samdb, rid_dn)
+        master_owner = get_fsmo_roleowner(samdb, rid_dn, role)
         m["becomeRidMaster"]= ldb.MessageElement(
             "1", ldb.FLAG_MOD_REPLACE,
             "becomeRidMaster")
     elif role == "pdc":
-        master_owner = get_fsmo_roleowner(samdb, domain_dn)
+        master_owner = get_fsmo_roleowner(samdb, domain_dn, role)
 
         res = samdb.search(domain_dn,
                            scope=ldb.SCOPE_BASE, attrs=["objectSid"])
@@ -165,34 +174,38 @@ def transfer_role(outf, role, samdb):
             sid, ldb.FLAG_MOD_REPLACE,
             "becomePdc")
     elif role == "naming":
-        master_owner = get_fsmo_roleowner(samdb, naming_dn)
+        master_owner = get_fsmo_roleowner(samdb, naming_dn, role)
         m["becomeDomainMaster"]= ldb.MessageElement(
             "1", ldb.FLAG_MOD_REPLACE,
             "becomeDomainMaster")
     elif role == "infrastructure":
-        master_owner = get_fsmo_roleowner(samdb, infrastructure_dn)
+        master_owner = get_fsmo_roleowner(samdb, infrastructure_dn, role)
         m["becomeInfrastructureMaster"]= ldb.MessageElement(
             "1", ldb.FLAG_MOD_REPLACE,
             "becomeInfrastructureMaster")
     elif role == "schema":
-        master_owner = get_fsmo_roleowner(samdb, schema_dn)
+        master_owner = get_fsmo_roleowner(samdb, schema_dn, role)
         m["becomeSchemaMaster"]= ldb.MessageElement(
             "1", ldb.FLAG_MOD_REPLACE,
             "becomeSchemaMaster")
     else:
         raise CommandError("Invalid FSMO role.")
 
-    if master_owner != new_owner:
-        try:
-            samdb.modify(m)
-        except LdbError, (num, msg):
-            raise CommandError("Transfer of '%s' role failed: %s" %
-                               (role, msg))
+    if not '*' in master_owner:
+        if master_owner != new_owner:
+            try:
+                samdb.modify(m)
+            except LdbError, (num, msg):
+                raise CommandError("Transfer of '%s' role failed: %s" %
+                                   (role, msg))
 
-        outf.write("FSMO transfer of '%s' role successful\n" % role)
-        return True
+            outf.write("FSMO transfer of '%s' role successful\n" % role)
+            return True
+        else:
+            outf.write("This DC already has the '%s' FSMO role\n" % role)
+            return False
     else:
-        outf.write("This DC already has the '%s' FSMO role\n" % role)
+        outf.write("%s\n" % master_owner)
         return False
 
 class cmd_fsmo_seize(Command):
@@ -210,7 +223,7 @@ class cmd_fsmo_seize(Command):
         Option("-H", "--URL", help="LDB URL for database or target server",
                type=str, metavar="URL", dest="H"),
         Option("--force",
-               help="Force seizing of the role without attempting to transfer first.",
+               help="Force seizing of role without attempting to transfer.",
                action="store_true"),
         Option("--role", type="choice", choices=["rid", "pdc", "infrastructure",
                "schema", "naming", "domaindns", "forestdns", "all"],
@@ -253,32 +266,41 @@ You must provide an Admin user and password."""),
             raise CommandError("Invalid FSMO role.")
         #first try to transfer to avoid problem if the owner is still active
         seize = False
-        master_owner = get_fsmo_roleowner(samdb, m.dn)
-        if master_owner != serviceName:
-            if force is None:
-                self.message("Attempting transfer...")
-                if not transfer_role(self.outf, role, samdb):
-                    #transfer failed, use the big axe...
-                    seize = True
-                    self.message("Transfer unsuccessful, seizing...")
-                else:
-                    self.message("Not seizing role as transfer was successful")
-
-            if force is not None or seize == True:
-                self.message("Seizing %s FSMO role..." % role)
-                m["fSMORoleOwner"]= ldb.MessageElement(
-                    serviceName, ldb.FLAG_MOD_REPLACE,
-                    "fSMORoleOwner")
-                try:
-                    samdb.modify(m)
-                except LdbError, (num, msg):
-                    raise CommandError("Failed to seize '%s' role: %s" %
-                                       (role, msg))
-                self.outf.write("FSMO seize of '%s' role successful\n" % role)
-                return True
+        master_owner = get_fsmo_roleowner(samdb, m.dn, role)
+        if not '*' in master_owner:
+            # if there is a different owner
+            if master_owner != serviceName:
+                # if --force isn't given, attempt transfer
+                if force is None:
+                    self.message("Attempting transfer...")
+                    try:
+                        transfer_role(self.outf, role, samdb)
+                    except:
+                        #transfer failed, use the big axe...
+                        seize = True
+                        self.message("Transfer unsuccessful, seizing...")
+                    else:
+                        self.message("Transfer successful, not seizing role")
+                        return True
+            else:
+                self.outf.write("This DC already has the '%s' FSMO role\n" %
+                                role)
+                return False
         else:
-            self.outf.write("This DC already has the '%s' FSMO role\n" % role)
-            return False
+            seize = True
+
+        if force is not None or seize == True:
+            self.message("Seizing %s FSMO role..." % role)
+            m["fSMORoleOwner"]= ldb.MessageElement(
+                serviceName, ldb.FLAG_MOD_REPLACE,
+                "fSMORoleOwner")
+            try:
+                samdb.modify(m)
+            except LdbError, (num, msg):
+                raise CommandError("Failed to seize '%s' role: %s" %
+                                   (role, msg))
+            self.outf.write("FSMO seize of '%s' role successful\n" % role)
+            return True
 
     def seize_dns_role(self, role, samdb, credopts, sambaopts,
                        versionopts, force):
@@ -299,33 +321,43 @@ You must provide an Admin user and password."""),
             raise CommandError("Invalid FSMO role.")
         #first try to transfer to avoid problem if the owner is still active
         seize = False
-        master_owner = get_fsmo_roleowner(samdb, m.dn)
-        if master_owner != serviceName:
-            if force is None:
-                self.message("Attempting transfer...")
-                if not transfer_dns_role(self.outf, sambaopts, credopts, role,
-                                      samdb):
-                    #transfer failed, use the big axe...
-                    seize = True
-                    self.message("Transfer unsuccessful, seizing...")
-                else:
-                    self.message("Not seizing role as transfer was successful\n")
-
-            if force is not None or seize == True:
-                self.message("Seizing %s FSMO role..." % role)
-                m["fSMORoleOwner"]= ldb.MessageElement(
-                    serviceName, ldb.FLAG_MOD_REPLACE,
-                    "fSMORoleOwner")
-                try:
-                    samdb.modify(m)
-                except LdbError, (num, msg):
-                    raise CommandError("Failed to seize '%s' role: %s" %
-                                       (role, msg))
-                self.outf.write("FSMO seize of '%s' role successful\n" % role)
-                return True
+        master_owner = get_fsmo_roleowner(samdb, m.dn, role)
+        if not '*' in master_owner:
+            # if there is a different owner
+            if master_owner != serviceName:
+                # if --force isn't given, attempt transfer
+                if force is None:
+                    self.message("Attempting transfer...")
+                    try:
+                        transfer_dns_role(self.outf, sambaopts, credopts, role,
+                                          samdb)
+                    except:
+                        #transfer failed, use the big axe...
+                        seize = True
+                        self.message("Transfer unsuccessful, seizing...")
+                    else:
+                        self.message("Transfer successful, not seizing role\n")
+                        return True
+            else:
+                self.outf.write("This DC already has the '%s' FSMO role\n" %
+                                role)
+                return False
         else:
-            self.outf.write("This DC already has the '%s' FSMO role\n" % role)
-            return False
+            seize = True
+
+        if force is not None or seize == True:
+            self.message("Seizing %s FSMO role..." % role)
+            m["fSMORoleOwner"]= ldb.MessageElement(
+                serviceName, ldb.FLAG_MOD_REPLACE,
+                "fSMORoleOwner")
+            try:
+                samdb.modify(m)
+            except LdbError, (num, msg):
+                raise CommandError("Failed to seize '%s' role: %s" %
+                                   (role, msg))
+            self.outf.write("FSMO seize of '%s' role successful\n" % role)
+            return True
+
 
     def run(self, force=None, H=None, role=None,
             credopts=None, sambaopts=None, versionopts=None):
@@ -388,13 +420,16 @@ class cmd_fsmo_show(Command):
         domaindns_dn = "CN=Infrastructure,DC=DomainDnsZones," + domain_dn
         forestdns_dn = "CN=Infrastructure,DC=ForestDnsZones," + forest_dn
 
-        infrastructureMaster = get_fsmo_roleowner(samdb, infrastructure_dn)
-        pdcEmulator = get_fsmo_roleowner(samdb, domain_dn)
-        namingMaster = get_fsmo_roleowner(samdb, naming_dn)
-        schemaMaster = get_fsmo_roleowner(samdb, schema_dn)
-        ridMaster = get_fsmo_roleowner(samdb, rid_dn)
-        domaindnszonesMaster = get_fsmo_roleowner(samdb, domaindns_dn)
-        forestdnszonesMaster = get_fsmo_roleowner(samdb, forestdns_dn)
+        infrastructureMaster = get_fsmo_roleowner(samdb, infrastructure_dn,
+                                                  "infrastructure")
+        pdcEmulator = get_fsmo_roleowner(samdb, domain_dn, "pdc")
+        namingMaster = get_fsmo_roleowner(samdb, naming_dn, "naming")
+        schemaMaster = get_fsmo_roleowner(samdb, schema_dn, "schema")
+        ridMaster = get_fsmo_roleowner(samdb, rid_dn, "rid")
+        domaindnszonesMaster = get_fsmo_roleowner(samdb, domaindns_dn,
+                                                  "domaindns")
+        forestdnszonesMaster = get_fsmo_roleowner(samdb, forestdns_dn,
+                                                  "forestdns")
 
         self.message("SchemaMasterRole owner: " + schemaMaster)
         self.message("InfrastructureMasterRole owner: " + infrastructureMaster)
@@ -449,8 +484,10 @@ You must provide an Admin user and password."""),
             transfer_role(self.outf, "naming", samdb)
             transfer_role(self.outf, "infrastructure", samdb)
             transfer_role(self.outf, "schema", samdb)
-            transfer_dns_role(self.outf, sambaopts, credopts, "domaindns", samdb)
-            transfer_dns_role(self.outf, sambaopts, credopts, "forestdns", samdb)
+            transfer_dns_role(self.outf, sambaopts, credopts,
+                              "domaindns", samdb)
+            transfer_dns_role(self.outf, sambaopts, credopts, "forestdns",
+                              samdb)
         else:
             if role == "domaindns" or role == "forestdns":
                 transfer_dns_role(self.outf, sambaopts, credopts, role, samdb)
diff --git a/python/samba/tests/auth.py b/python/samba/tests/samba_tool/fsmo.py
similarity index 59%
copy from python/samba/tests/auth.py
copy to python/samba/tests/samba_tool/fsmo.py
index f71e1a7..7058277 100644
--- a/python/samba/tests/auth.py
+++ b/python/samba/tests/samba_tool/fsmo.py
@@ -1,5 +1,5 @@
 # Unix SMB/CIFS implementation.
-# Copyright (C) Jelmer Vernooij <jelmer at samba.org> 2007
+# Copyright (C) Rowland Penny <rpenny at samba.org> 2016
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -15,17 +15,15 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
-"""Tests for the Auth Python bindings.
+import os
+from samba.tests.samba_tool.base import SambaToolCmdTest
 
-Note that this just tests the bindings work. It does not intend to test
-the functionality, that's already done in other tests.
-"""
+class FsmoCmdTestCase(SambaToolCmdTest):
+    """Test for samba-tool fsmo show subcommand"""
 
-from samba import auth
-import samba.tests
-
-class AuthTests(samba.tests.TestCase):
-
-    def test_system_session(self):
-        auth.system_session()
+    def test_fsmoget(self):
+        """Run fsmo show to see if it errors"""
+        (result, out, err) = self.runsubcmd("fsmo", "show")
 
+        self.assertCmdSuccess(result)
+        self.assertEquals(err,"","Shouldn't be any error messages")
diff --git a/source3/client/clitar.c b/source3/client/clitar.c
index 8703f6b..188f65d 100644
--- a/source3/client/clitar.c
+++ b/source3/client/clitar.c
@@ -1510,7 +1510,7 @@ static NTSTATUS is_subpath(const char *sub, const char *full,
 	}
 	string_replace(f, '\\', '/');
 	s = strlower_talloc(tmp_ctx, sub);
-	if (f == NULL) {
+	if (s == NULL) {
 		status = NT_STATUS_NO_MEMORY;
 		goto out_ctx_free;
 	}
diff --git a/source3/lib/sysquotas.c b/source3/lib/sysquotas.c
index 102e458..c2d09da 100644
--- a/source3/lib/sysquotas.c
+++ b/source3/lib/sysquotas.c
@@ -493,11 +493,6 @@ int sys_get_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DI
 	SAFE_FREE(bdev);
 	SAFE_FREE(fs);
 
-	if ((ret!=0)&& (errno == EDQUOT)) {
-		DEBUG(10,("sys_get_quota() warning over quota!\n"));
-		return 0;
-	}
-
 	return ret;
 }
 
@@ -560,11 +555,6 @@ int sys_set_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DI
 	SAFE_FREE(bdev);
 	SAFE_FREE(fs);
 
-	if ((ret!=0)&& (errno == EDQUOT)) {
-		DEBUG(10,("sys_set_quota() warning over quota!\n"));
-		return 0;
-	}
-
 	return ret;		
 }
 
diff --git a/source3/lib/sysquotas_linux.c b/source3/lib/sysquotas_linux.c
index 55d1518..c0987de 100644
--- a/source3/lib/sysquotas_linux.c
+++ b/source3/lib/sysquotas_linux.c
@@ -59,7 +59,8 @@ int sys_get_vfs_quota(const char *path, const char *bdev,
 				   "SMB_USER_QUOTA_TYPE uid[%u]\n",
 				   path, bdev, (unsigned)id.uid));
 
-			if ((ret = quotactl(QCMD(Q_GETQUOTA,USRQUOTA), bdev, id.uid, (caddr_t)&D))&&errno != EDQUOT) {
+			if ((ret = quotactl(QCMD(Q_GETQUOTA, USRQUOTA), bdev,
+					    id.uid, (caddr_t)&D))) {
 				return ret;
 			}
 
@@ -69,7 +70,8 @@ int sys_get_vfs_quota(const char *path, const char *bdev,
 				   "SMB_GROUP_QUOTA_TYPE gid[%u]\n",
 				   path, bdev, (unsigned)id.gid));
 
-			if ((ret = quotactl(QCMD(Q_GETQUOTA,GRPQUOTA), bdev, id.gid, (caddr_t)&D))&&errno != EDQUOT) {
+			if ((ret = quotactl(QCMD(Q_GETQUOTA, GRPQUOTA), bdev,
+					    id.gid, (caddr_t)&D))) {
 				return ret;
 			}
 


-- 
Samba Shared Repository



More information about the samba-cvs mailing list