[SCM] Samba Shared Repository - branch v4-7-test updated

Stefan Metzmacher metze at samba.org
Sun Jul 23 12:42:03 UTC 2017


The branch, v4-7-test has been updated
       via  892c3aa tevent: version 0.9.33
       via  ce417f5 tevent: handle passing req = NULL to tevent_req_print()
       via  3d87c06 tevent: avoid calling talloc_get_name(NULL) in tevent_req_default_print()
       via  50845aa ldb: version 1.2.1
       via  bed75c1 ldb/tests: more thoroughly test empty ldb_msg elements
       via  7eda7c5 ldb: avoid searching empty lists in ldb_msg_find_common_values
       via  1f9e8f5 ldb: Fix index out of bound in ldb_msg_find_common_values
       via  9998480 ldb: Use libraries from build dir for testsuite
      from  895bd0d WHATSNEW: add a note about the new 'smbclient deltree' command.

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-7-test


- Log -----------------------------------------------------------------
commit 892c3aaeb683f2ed51a60ac49fc2c2ea4dede6e8
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Jul 21 14:34:59 2017 +0200

    tevent: version 0.9.33
    
    * make tevent_req_print() more robust against crashes
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    (cherry picked from commit 7ad3a99d462e4a43c9f64b0877111d5e58f56e6e)
    
    Autobuild-User(v4-7-test): Stefan Metzmacher <metze at samba.org>
    Autobuild-Date(v4-7-test): Sun Jul 23 14:41:25 CEST 2017 on sn-devel-144

commit ce417f5ceec42a70ab651bc3a0dc2ab29cb7efd2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Jul 20 14:20:03 2017 +0200

    tevent: handle passing req = NULL to tevent_req_print()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    (cherry picked from commit ca3e98488a45aa143e4ba454b4ba8763f09a6f50)

commit 3d87c0660eba61ac4b02e43798aa82ee9e64b454
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Jul 20 14:16:44 2017 +0200

    tevent: avoid calling talloc_get_name(NULL) in tevent_req_default_print()
    
    We have the same information available under req->internal.private_type.
    
    This way it's possible to call tevent_req_print() after
    tevent_req_received() was called.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    (cherry picked from commit 21b56ffd983cc0b982bea55866bfa84c79133503)

commit 50845aa9ea18b9e3621bb2eb0f10f8dd50af06b4
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Jul 21 14:36:08 2017 +0200

    ldb: version 1.2.1
    
    * Bug #12882: Do not install _ldb_text.py if we have system libldb
    * Use libraries from build dir for testsuite
    * Bug #12900: Fix index out of bound in ldb_msg_find_common_values
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    
    Autobuild-User(master): Ralph Böhme <slow at samba.org>
    Autobuild-Date(master): Sat Jul 22 03:46:25 CEST 2017 on sn-devel-144
    
    (cherry picked from commit 19dfccea744a843511d9c4ca2b5adbd648284250)

commit bed75c17ca4d19aa8f02c0daa1ce9e6659f03b8c
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Jul 6 12:41:07 2017 +1200

    ldb/tests: more thoroughly test empty ldb_msg elements
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    
    Autobuild-User(master): Andreas Schneider <asn at cryptomilk.org>
    Autobuild-Date(master): Fri Jul  7 20:10:37 CEST 2017 on sn-devel-144
    
    (cherry picked from commit 4b3de6118569eb9a1d4f233eca112d0d207c1087)

commit 7eda7c5d16b857d5cc18546a118e15ed69a5d3fb
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Jul 6 10:01:24 2017 +1200

    ldb: avoid searching empty lists in ldb_msg_find_common_values
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    (cherry picked from commit 282410fa2416404962521ad6b2598a9c83b63594)

commit 1f9e8f574888627f806b9f95788098bb8e7dd31c
Author: Lukas Slebodnik <lslebodn at redhat.com>
Date:   Tue Jul 4 15:46:49 2017 +0200

    ldb: Fix index out of bound in ldb_msg_find_common_values
    
    cmocka unit test failed on i386
    [==========] Running 2 test(s).
    [ RUN      ] test_ldb_msg_find_duplicate_val
    [       OK ] test_ldb_msg_find_duplicate_val
    [ RUN      ] test_ldb_msg_find_common_values
    [  FAILED  ] test_ldb_msg_find_common_values
    [==========] 2 test(s) run.
    [  ERROR   ] --- 0x14 != 0
    [   LINE   ] --- ../tests/ldb_msg.c:266: error: Failure!
    [  PASSED  ] 1 test(s).
    [  FAILED  ] 1 test(s), listed below:
    [  FAILED  ] test_ldb_msg_find_common_values
     1 FAILED TEST(S)
    
    But we were just lucky on other platforms because there is
    index out of bound according to valgrind error.
    
    ==3298== Invalid read of size 4
    ==3298==    at 0x486FCF6: ldb_val_cmp (ldb_msg.c:95)
    ==3298==    by 0x486FCF6: ldb_msg_find_common_values (ldb_msg.c:266)
    ==3298==    by 0x109A3D: test_ldb_msg_find_common_values (ldb_msg.c:265)
    ==3298==    by 0x48E7490: ??? (in /usr/lib/libcmocka.so.0.4.1)
    ==3298==    by 0x48E7EB0: _cmocka_run_group_tests (in /usr/lib/libcmocka.so.0.4.1)
    ==3298==    by 0x1089B7: main (ldb_msg.c:352)
    ==3298==  Address 0x4b07734 is 4 bytes after a block of size 48 alloc'd
    ==3298==    at 0x483223E: malloc (vg_replace_malloc.c:299)
    ==3298==    by 0x4907AA7: _talloc_array (in /usr/lib/libtalloc.so.2.1.9)
    ==3298==    by 0x486FBF8: ldb_msg_find_common_values (ldb_msg.c:245)
    ==3298==    by 0x109A3D: test_ldb_msg_find_common_values (ldb_msg.c:265)
    ==3298==    by 0x48E7490: ??? (in /usr/lib/libcmocka.so.0.4.1)
    ==3298==    by 0x48E7EB0: _cmocka_run_group_tests (in /usr/lib/libcmocka.so.0.4.1)
    ==3298==    by 0x1089B7: main (ldb_msg.c:352)
    
    Signed-off-by: Lukas Slebodnik <lslebodn at redhat.com>
    Reviewed-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    (cherry picked from commit 963d9f12f902ae266a8c7edbf4249090de46173b)

commit 99984803ae337c5728edc7d245e6c0271d450441
Author: Lukas Slebodnik <lslebodn at redhat.com>
Date:   Tue Jul 4 00:32:31 2017 +0200

    ldb: Use libraries from build dir for testsuite
    
    There was a failure when tests were executed after after extracting
    ldb tarball.
    
      sh$ make -j8 check
      WAF_MAKE=1 PATH=buildtools/bin:../../buildtools/bin:$PATH waf test
      ldbadd: error while loading shared libraries: libldb.so.1: cannot open shared object file: No such file or directory
      cat: write error: Broken pipe
      Traceback (most recent call last):
        File "tests/python/api.py", line 10, in <module>
          import ldb
      ImportError: libldb.so.1: cannot open shared object file: No such file or directory
      Traceback (most recent call last):
        File "tests/python/api.py", line 10, in <module>
          import ldb
      ImportError: libpyldb-util.so.1: cannot open shared object file: No such file or directory
      bin/ldb_tdb_mod_op_test: error while loading shared libraries: libldb.so.1: cannot open shared object file: No such file or directory
      testsuite returned 1
    
    Signed-off-by: Lukas Slebodnik <lslebodn at redhat.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Signed-off-by: Alexander Bokovoy <ab at samba.org>
    (cherry picked from commit d5d6d209dedd60f8e99d11789f2a0d4e2bf95896)

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

Summary of changes:
 lib/ldb/ABI/{ldb-1.2.0.sigs => ldb-1.2.1.sigs}     |  0
 ...yldb-util-1.1.10.sigs => pyldb-util-1.2.1.sigs} |  0
 ...-util-1.1.10.sigs => pyldb-util.py3-1.2.1.sigs} |  0
 lib/ldb/common/ldb_msg.c                           | 13 +++------
 lib/ldb/tests/ldb_msg.c                            | 32 ++++++++++++++++++++--
 lib/ldb/wscript                                    |  9 +++---
 .../ABI/{tevent-0.9.31.sigs => tevent-0.9.33.sigs} |  0
 lib/tevent/tevent_req.c                            |  6 +++-
 lib/tevent/wscript                                 |  2 +-
 9 files changed, 44 insertions(+), 18 deletions(-)
 copy lib/ldb/ABI/{ldb-1.2.0.sigs => ldb-1.2.1.sigs} (100%)
 copy lib/ldb/ABI/{pyldb-util-1.1.10.sigs => pyldb-util-1.2.1.sigs} (100%)
 copy lib/ldb/ABI/{pyldb-util-1.1.10.sigs => pyldb-util.py3-1.2.1.sigs} (100%)
 copy lib/tevent/ABI/{tevent-0.9.31.sigs => tevent-0.9.33.sigs} (100%)


Changeset truncated at 500 lines:

diff --git a/lib/ldb/ABI/ldb-1.2.0.sigs b/lib/ldb/ABI/ldb-1.2.1.sigs
similarity index 100%
copy from lib/ldb/ABI/ldb-1.2.0.sigs
copy to lib/ldb/ABI/ldb-1.2.1.sigs
diff --git a/lib/ldb/ABI/pyldb-util-1.1.10.sigs b/lib/ldb/ABI/pyldb-util-1.2.1.sigs
similarity index 100%
copy from lib/ldb/ABI/pyldb-util-1.1.10.sigs
copy to lib/ldb/ABI/pyldb-util-1.2.1.sigs
diff --git a/lib/ldb/ABI/pyldb-util-1.1.10.sigs b/lib/ldb/ABI/pyldb-util.py3-1.2.1.sigs
similarity index 100%
copy from lib/ldb/ABI/pyldb-util-1.1.10.sigs
copy to lib/ldb/ABI/pyldb-util.py3-1.2.1.sigs
diff --git a/lib/ldb/common/ldb_msg.c b/lib/ldb/common/ldb_msg.c
index abad5a8..c2782db 100644
--- a/lib/ldb/common/ldb_msg.c
+++ b/lib/ldb/common/ldb_msg.c
@@ -207,6 +207,9 @@ int ldb_msg_find_common_values(struct ldb_context *ldb,
 	if (strcmp(el->name, el2->name) != 0) {
 		return LDB_ERR_INAPPROPRIATE_MATCHING;
 	}
+	if (el->num_values == 0 || el2->num_values == 0) {
+		return LDB_SUCCESS;
+	}
 	/*
 	   With few values, it is better to do the brute-force search than the
 	   clever search involving tallocs, memcpys, sorts, etc.
@@ -262,20 +265,12 @@ int ldb_msg_find_common_values(struct ldb_context *ldb,
 	n_values = el->num_values;
 	i = 0;
 	j = 0;
-	while (i != n_values) {
+	while (i != n_values && j < el2->num_values) {
 		int ret = ldb_val_cmp(&values[i], &values2[j]);
 		if (ret < 0) {
 			i++;
 		} else if (ret > 0) {
 			j++;
-			if (j == el2->num_values) {
-				/*
-				  We have walked past the end of the second
-				  list, meaning the remainder of the first
-				  list cannot collide and we're done.
-				*/
-				break;
-			}
 		} else {
 			/* we have a collision */
 			if (! remove_duplicates) {
diff --git a/lib/ldb/tests/ldb_msg.c b/lib/ldb/tests/ldb_msg.c
index e665d55..f8de418 100644
--- a/lib/ldb/tests/ldb_msg.c
+++ b/lib/ldb/tests/ldb_msg.c
@@ -87,6 +87,11 @@ static void test_ldb_msg_find_duplicate_val(void **state)
 	ret = ldb_msg_add_empty(msg, "el1", 0, &el);
 	assert_int_equal(ret, LDB_SUCCESS);
 
+	/* An empty message contains no duplicates */
+	ret = ldb_msg_find_duplicate_val(NULL, test_ctx, el, &dupe, 0);
+	assert_int_equal(ret, LDB_SUCCESS);
+	assert_null(dupe);
+
 	for (i = 0; i < 5; i++) {
 		add_uint_value(test_ctx, msg, "el1", i);
 	}
@@ -176,19 +181,19 @@ static void _assert_element_equal(struct ldb_message_element *a,
 static void test_ldb_msg_find_common_values(void **state)
 {
 	/* we only use the state as a talloc context */
-	struct ldb_message_element *el, *el2, *el3, *el4, *el2b;
+	struct ldb_message_element *el, *el2, *el3, *el4, *el2b, *empty;
 	struct ldb_message_element *orig, *orig2, *orig3, *orig4;
 	int ret;
 	const uint32_t remove_dupes = LDB_MSG_FIND_COMMON_REMOVE_DUPLICATES;
 	el = new_msg_element(*state, "test", 0, 4);
 	el2 = new_msg_element(*state, "test", 4, 4);
 	el3 = new_msg_element(*state, "test", 6, 4);
+	empty = new_msg_element(*state, "test", 0, 0);
 	orig = new_msg_element(*state, "test", 0, 4);
 	orig2 = new_msg_element(*state, "test", 4, 4);
 	orig3 = new_msg_element(*state, "test", 6, 4);
 
 	/* first round is with short value arrays, using quadratic method */
-
 	/* we expect no collisions here */
 	ret = ldb_msg_find_common_values(NULL, *state, el, el2, 0);
 	assert_int_equal(ret, LDB_SUCCESS);
@@ -256,7 +261,7 @@ static void test_ldb_msg_find_common_values(void **state)
 	assert_element_equal(el2, orig2);
 	assert_int_equal(el3->num_values, 0);
 
-	/* seeing as we have an empty element, try permutations therewith.
+	/* permutations involving empty elements.
 	   everything should succeed. */
 	ret = ldb_msg_find_common_values(NULL, *state, el3, el2, 0);
 	assert_int_equal(ret, LDB_SUCCESS);
@@ -264,10 +269,19 @@ static void test_ldb_msg_find_common_values(void **state)
 	assert_int_equal(ret, LDB_SUCCESS);
 	ret = ldb_msg_find_common_values(NULL, *state, el2, el3, 0);
 	assert_int_equal(ret, LDB_SUCCESS);
+	assert_int_equal(el2->num_values, orig2->num_values);
 	ret = ldb_msg_find_common_values(NULL, *state, el3, el2, remove_dupes);
 	assert_int_equal(ret, LDB_SUCCESS);
+	assert_int_equal(el2->num_values, orig2->num_values);
+	assert_int_equal(el3->num_values, 0); /* el3 is now empty */
 	ret = ldb_msg_find_common_values(NULL, *state, el2, el3, remove_dupes);
 	assert_int_equal(ret, LDB_SUCCESS);
+	ret = ldb_msg_find_common_values(NULL, *state, el3, empty, 0);
+	assert_int_equal(ret, LDB_SUCCESS);
+	ret = ldb_msg_find_common_values(NULL, *state, empty, empty, 0);
+	assert_int_equal(ret, LDB_SUCCESS);
+	ret = ldb_msg_find_common_values(NULL, *state, empty, el3, 0);
+	assert_int_equal(ret, LDB_SUCCESS);
 
 	assert_element_equal(el2, orig2);
 	assert_element_equal(el, orig);
@@ -329,6 +343,18 @@ static void test_ldb_msg_find_common_values(void **state)
 	orig2 = new_msg_element(*state, "test", 12, 2);
 	assert_element_equal(el2, orig2);
 
+	/* test the empty el against the full elements */
+	ret = ldb_msg_find_common_values(NULL, *state, el, empty, 0);
+	assert_int_equal(ret, LDB_SUCCESS);
+	ret = ldb_msg_find_common_values(NULL, *state, empty, el, 0);
+	assert_int_equal(ret, LDB_SUCCESS);
+	ret = ldb_msg_find_common_values(NULL, *state, el, empty, remove_dupes);
+	assert_int_equal(ret, LDB_SUCCESS);
+	ret = ldb_msg_find_common_values(NULL, *state, empty, el, remove_dupes);
+	assert_int_equal(ret, LDB_SUCCESS);
+	assert_element_equal(el, orig);
+	assert_element_equal(empty, el3);
+
 	/* make sure an identical element with a different name is rejected */
 	el2 = new_msg_element(*state, "fish", 12, 2);
 	ret = ldb_msg_find_common_values(NULL, *state, el2, el, remove_dupes);
diff --git a/lib/ldb/wscript b/lib/ldb/wscript
index 32647dd..6f3b326 100644
--- a/lib/ldb/wscript
+++ b/lib/ldb/wscript
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'ldb'
-VERSION = '1.2.0'
+VERSION = '1.2.1'
 
 blddir = 'bin'
 
@@ -361,7 +361,10 @@ def test(ctx):
     shutil.rmtree(test_prefix, ignore_errors=True)
     os.makedirs(test_prefix)
     os.environ['TEST_DATA_PREFIX'] = test_prefix
-    os.environ['LD_LIBRARY_PATH'] = Utils.g_module.blddir + '/bin/default/lib/ldb'
+    os.environ['LDB_MODULES_PATH'] = Utils.g_module.blddir + "/modules/ldb"
+    samba_utils.ADD_LD_LIBRARY_PATH('bin/shared')
+    samba_utils.ADD_LD_LIBRARY_PATH('bin/shared/private')
+
     cmd = 'tests/test-tdb.sh %s' % Utils.g_module.blddir
     ret = samba_utils.RUN_COMMAND(cmd)
     print("testsuite returned %d" % ret)
@@ -374,8 +377,6 @@ def test(ctx):
         extra_env={'SELFTEST_PREFIX': test_prefix})
     print("Python testsuite returned %d" % pyret)
 
-    os.environ['LDB_MODULES_PATH'] = Utils.g_module.blddir + '/modules/ldb'
-    os.environ['LD_LIBRARY_PATH'] = Utils.g_module.blddir + '/bin/default/lib/ldb'
     cmocka_ret = 0
     for test_exe in ['ldb_tdb_mod_op_test',
                      'ldb_msg_test']:
diff --git a/lib/tevent/ABI/tevent-0.9.31.sigs b/lib/tevent/ABI/tevent-0.9.33.sigs
similarity index 100%
copy from lib/tevent/ABI/tevent-0.9.31.sigs
copy to lib/tevent/ABI/tevent-0.9.33.sigs
diff --git a/lib/tevent/tevent_req.c b/lib/tevent/tevent_req.c
index 22f7a4f..15754d3 100644
--- a/lib/tevent/tevent_req.c
+++ b/lib/tevent/tevent_req.c
@@ -36,7 +36,7 @@ char *tevent_req_default_print(struct tevent_req *req, TALLOC_CTX *mem_ctx)
 			       req->internal.state,
 			       (unsigned long long)req->internal.error,
 			       (unsigned long long)req->internal.error,
-			       talloc_get_name(req->data),
+			       req->internal.private_type,
 			       req->data,
 			       req->internal.timer,
 			       req->internal.finish_location
@@ -45,6 +45,10 @@ char *tevent_req_default_print(struct tevent_req *req, TALLOC_CTX *mem_ctx)
 
 char *tevent_req_print(TALLOC_CTX *mem_ctx, struct tevent_req *req)
 {
+	if (req == NULL) {
+		return talloc_strdup(mem_ctx, "tevent_req[NULL]");
+	}
+
 	if (!req->private_print) {
 		return tevent_req_default_print(req, mem_ctx);
 	}
diff --git a/lib/tevent/wscript b/lib/tevent/wscript
index 54f216d..bc874bb 100644
--- a/lib/tevent/wscript
+++ b/lib/tevent/wscript
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'tevent'
-VERSION = '0.9.32'
+VERSION = '0.9.33'
 
 blddir = 'bin'
 


-- 
Samba Shared Repository



More information about the samba-cvs mailing list