[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Mon Aug 24 03:11:02 UTC 2020


The branch, master has been updated
       via  d3109a11c8d lib/util: Move cleanup for unit test in teardown function
       via  c057586fc85 lib/util: Remove wrong return statement in unit test
       via  40afb0bbcdd lib/util: Fix cleanup in unit test
       via  7dabe5acdfa lib/util: Remove unnecessary semicolon from wscript_build
       via  4a252f6e0f5 python compat: remove ConfigParser
       via  3c026ba492a tests/vlv: attempt to cause trouble by changing sort attribute
       via  d64886f3e5e tests/vlv: remove redundant assignments
      from  df98e7db04c s4/dns: do not crash when additional data not found

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


- Log -----------------------------------------------------------------
commit d3109a11c8dbfbe3afec8fdfe44371ab13780dc6
Author: Christof Schmitt <cs at samba.org>
Date:   Tue Aug 18 12:48:09 2020 -0700

    lib/util: Move cleanup for unit test in teardown function
    
    Where to call rmdir does not matter, but that should avoid the TOCTOU
    warning from CID 1466194 and might be slightly cleaner.
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    
    Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date(master): Mon Aug 24 03:10:09 UTC 2020 on sn-devel-184

commit c057586fc85e84a51c9611714df454b188da2da5
Author: Christof Schmitt <cs at samba.org>
Date:   Tue Aug 18 09:29:28 2020 -0700

    lib/util: Remove wrong return statement in unit test
    
    Fixes CID 1466195
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 40afb0bbcdd5813235bf0697c091c8cac755f587
Author: Christof Schmitt <cs at samba.org>
Date:   Tue Aug 18 11:14:47 2020 -0700

    lib/util: Fix cleanup in unit test
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 7dabe5acdfac9b43356e2e3678ffb657e659ef7c
Author: Christof Schmitt <cs at samba.org>
Date:   Tue Aug 18 09:28:12 2020 -0700

    lib/util: Remove unnecessary semicolon from wscript_build
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 4a252f6e0f5b0dab44e50db4a93e5c9a9a2d4ff1
Author: David Mulder <dmulder at suse.com>
Date:   Thu Aug 20 15:51:47 2020 -0600

    python compat: remove ConfigParser
    
    Signed-off-by: David Mulder <dmulder at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 3c026ba492a9d58a03884101b54deb3892e4a706
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 22 10:32:29 2019 +1200

    tests/vlv: attempt to cause trouble by changing sort attribute
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit d64886f3e5e6a9e25bc4510150fdc3ee38fab7c6
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 22 10:33:15 2019 +1200

    tests/vlv: remove redundant assignments
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

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

Summary of changes:
 lib/util/tests/test_util.c       | 16 ++++++++++------
 lib/util/wscript_build           |  2 +-
 python/samba/compat.py           |  5 -----
 python/samba/gp_parse/gp_ini.py  | 11 +++++++----
 python/samba/gpclass.py          |  6 +++---
 source4/dsdb/tests/python/vlv.py | 27 ++++++++++++++++++++++++---
 6 files changed, 45 insertions(+), 22 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/util/tests/test_util.c b/lib/util/tests/test_util.c
index eebba39e70c..e547668ade3 100644
--- a/lib/util/tests/test_util.c
+++ b/lib/util/tests/test_util.c
@@ -94,8 +94,6 @@ static int group_teardown(void **state)
 	struct test_paths *paths = *state;
 	int ret;
 
-	return 0;
-
 	ret = rmdir(paths->dir);
 	assert_return_code(ret, errno);
 
@@ -111,7 +109,7 @@ static int group_teardown(void **state)
 	ret = unlink(paths->symlink_file);
 	assert_return_code(ret, errno);
 
-	ret = unlink(paths->testdir);
+	ret = rmdir(paths->testdir);
 	assert_return_code(ret, errno);
 
 	free(paths);
@@ -132,9 +130,14 @@ static void test_directory_create_or_exists_none(void **state)
 	assert_return_code(ret, errno);
 	assert_int_equal(sbuf.st_mode & 0777, 0775);
 	assert_true(S_ISDIR(sbuf.st_mode));
+}
 
-	ret = rmdir(paths->none);
-	assert_return_code(ret, errno);
+static int teardown_none_directory(void **state)
+{
+	struct test_paths *paths = *state;
+
+	rmdir(paths->none);
+	return 0;
 }
 
 static void test_directory_create_or_exists_dir(void **state)
@@ -220,7 +223,8 @@ static void test_directory_create_or_exists_symlink_file(void **state)
 int main(int argc, char **argv)
 {
 	const struct CMUnitTest tests[] = {
-		cmocka_unit_test(test_directory_create_or_exists_none),
+		cmocka_unit_test_teardown(test_directory_create_or_exists_none,
+					  teardown_none_directory),
 		cmocka_unit_test(test_directory_create_or_exists_dir),
 		cmocka_unit_test(test_directory_create_or_exists_file),
 		cmocka_unit_test(test_directory_create_or_exists_symlink_none),
diff --git a/lib/util/wscript_build b/lib/util/wscript_build
index 7f930afd599..0a730c17c88 100644
--- a/lib/util/wscript_build
+++ b/lib/util/wscript_build
@@ -315,4 +315,4 @@ else:
                      source='tests/test_util.c',
                      deps='cmocka replace talloc samba-util',
                      local_include=False,
-                     for_selftest=True);
+                     for_selftest=True)
diff --git a/python/samba/compat.py b/python/samba/compat.py
index b517999defd..a2b6f3c8645 100644
--- a/python/samba/compat.py
+++ b/python/samba/compat.py
@@ -71,11 +71,6 @@ if PY3:
     # compat functions
     from functools import cmp_to_key as cmp_to_key_fn
 
-    # alias
-    def ConfigParser(defaults=None, dict_type=dict, allow_no_value=False):
-        from configparser import ConfigParser
-        return ConfigParser(defaults, dict_type, allow_no_value, interpolation=None)
-
 
 else:
     raise NotImplementedError("Samba versions >= 4.11 do not support Python 2.x")
diff --git a/python/samba/gp_parse/gp_ini.py b/python/samba/gp_parse/gp_ini.py
index d567addd3ea..1fac861b0a3 100644
--- a/python/samba/gp_parse/gp_ini.py
+++ b/python/samba/gp_parse/gp_ini.py
@@ -22,7 +22,7 @@ import collections
 import re
 
 from xml.etree.ElementTree import Element, SubElement
-from samba.compat import ConfigParser
+from configparser import ConfigParser
 from io import StringIO
 
 from samba.gp_parse import GPParser, ENTITY_USER_ID
@@ -34,7 +34,8 @@ class GPIniParser(GPParser):
 
     def parse(self, contents):
         # Required dict_type in Python 2.7
-        self.ini_conf = ConfigParser(dict_type=collections.OrderedDict)
+        self.ini_conf = ConfigParser(dict_type=collections.OrderedDict,
+                                     interpolation=None)
         self.ini_conf.optionxform = str
 
         self.ini_conf.readfp(StringIO(contents.decode(self.encoding)))
@@ -88,7 +89,8 @@ class GPIniParser(GPParser):
 
     def load_xml(self, root):
         # Required dict_type in Python 2.7
-        self.ini_conf = ConfigParser(dict_type=collections.OrderedDict)
+        self.ini_conf = ConfigParser(dict_type=collections.OrderedDict,
+                                     interpolation=None)
         self.ini_conf.optionxform = str
 
         for s in root.findall('Section'):
@@ -110,7 +112,8 @@ class GPTIniParser(GPIniParser):
             super(GPTIniParser, self).parse(contents)
         except UnicodeDecodeError:
             # Required dict_type in Python 2.7
-            self.ini_conf = ConfigParser(dict_type=collections.OrderedDict)
+            self.ini_conf = ConfigParser(dict_type=collections.OrderedDict,
+                                         interpolation=None)
             self.ini_conf.optionxform = str
 
             # Fallback to Latin-1 which RSAT appears to use
diff --git a/python/samba/gpclass.py b/python/samba/gpclass.py
index 7f64e75d40b..37d6be38de8 100644
--- a/python/samba/gpclass.py
+++ b/python/samba/gpclass.py
@@ -21,7 +21,7 @@ import errno
 import tdb
 sys.path.insert(0, "bin/python")
 from samba import NTSTATUSError
-from samba.compat import ConfigParser
+from configparser import ConfigParser
 from io import StringIO
 from samba.compat import get_bytes
 from abc import ABCMeta, abstractmethod
@@ -326,7 +326,7 @@ class gp_ext(object):
 class gp_inf_ext(gp_ext):
     def read(self, data_file):
         policy = open(data_file, 'rb').read()
-        inf_conf = ConfigParser()
+        inf_conf = ConfigParser(interpolation=None)
         inf_conf.optionxform = str
         try:
             inf_conf.readfp(StringIO(policy.decode()))
@@ -525,7 +525,7 @@ def parse_gpext_conf(smb_conf):
     else:
         lp.load_default()
     ext_conf = lp.state_path('gpext.conf')
-    parser = ConfigParser()
+    parser = ConfigParser(interpolation=None)
     parser.read(ext_conf)
     return lp, parser
 
diff --git a/source4/dsdb/tests/python/vlv.py b/source4/dsdb/tests/python/vlv.py
index 90a29ab6ec2..86ac2b72240 100644
--- a/source4/dsdb/tests/python/vlv.py
+++ b/source4/dsdb/tests/python/vlv.py
@@ -510,10 +510,8 @@ class VLVTests(VLVTestsBase):
                 random.shuffle(gte_tests)
                 res = None
                 sort_control = "server_sort:1:0:%s" % attr
-
                 expected_order = self.get_expected_order(attr, expression)
-                sort_control = "server_sort:1:0:%s" % attr
-                res = None
+
                 for before in range(0, 11):
                     after = before
                     for gte in gte_tests:
@@ -1218,6 +1216,29 @@ class VLVTests(VLVTestsBase):
         expected_results = [r for r in full_results if r != del_user[attr]]
         self.assertEqual(results, expected_results)
 
+    def test_vlv_change_during_search(self):
+        attr = 'facsimileTelephoneNumber'
+        prefix = "change_during_search_"
+        expr = "(&(objectClass=user)(cn=%s*))" % (prefix)
+        num_users = 3
+        users = [self.create_user(i, num_users, prefix=prefix)
+                 for i in range(num_users)]
+        expr = "(&(objectClass=user)(facsimileTelephoneNumber=%s*))" % (prefix)
+
+        # Start the VLV, change the searched attribute and try the
+        # cookie.
+        results, cookie = self.vlv_search(attr, expr)
+
+        for u in users:
+            self.ldb.modify_ldif("dn: %s\n"
+                                 "changetype: modify\n"
+                                 "replace: facsimileTelephoneNumber\n"
+                                 "facsimileTelephoneNumber: 123" % u['dn'])
+
+        for i in range(2):
+            results, cookie = self.vlv_search(attr, expr, cookie=cookie,
+                                              offset=i+1)
+
 
 
 class PagedResultsTests(TestsWithUserOU):


-- 
Samba Shared Repository



More information about the samba-cvs mailing list