[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