[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Wed Mar 6 04:31:01 UTC 2019


The branch, master has been updated
       via  d94c8992f9a sam.c: allocate account_sid on tmp_ctx
       via  ce83b21be8a sam.c: fix incorrect check of talloc_new() allocation
       via  6da3664f8a1 ndr_spoolss_buf: fix out of scope use of stack variable in NDR_SPOOLSS_PUSH_ENUM_OUT()
       via  c059b8cb82c Enable make test even without lmdb
      from  4125ff89e44 lib/winbind_util: Add winbind_xid_to_sid for --without-winbind

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


- Log -----------------------------------------------------------------
commit d94c8992f9a2941868aa3438a3fd7096c65c411d
Author: Isaac Boukris <iboukris at gmail.com>
Date:   Sun Jan 20 14:56:30 2019 +0200

    sam.c: allocate account_sid on tmp_ctx
    
    Signed-off-by: Isaac Boukris <iboukris at gmail.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    
    Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date(master): Wed Mar  6 04:30:22 UTC 2019 on sn-devel-144

commit ce83b21be8aaa537ce3cb8e2ed0bc86f33024159
Author: Isaac Boukris <iboukris at gmail.com>
Date:   Tue Jan 15 13:58:52 2019 +0200

    sam.c: fix incorrect check of talloc_new() allocation
    
    Signed-off-by: Isaac Boukris <iboukris at gmail.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>

commit 6da3664f8a11397fd3fb38e89c2432b8bf321e59
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Mar 1 15:48:18 2019 +0100

    ndr_spoolss_buf: fix out of scope use of stack variable in NDR_SPOOLSS_PUSH_ENUM_OUT()
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13818
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Björn Jacke <bjacke at samba.org>
    Reviewed-by: Günther Deschner <gd at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>

commit c059b8cb82c7c2443e74aa780646607606f41e4b
Author: Mathieu Parent <math.parent at gmail.com>
Date:   Wed Oct 3 20:18:55 2018 +0000

    Enable make test even without lmdb
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13630
    
    Signed-off-by: Mathieu Parent <math.parent at gmail.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>

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

Summary of changes:
 .../{ldb_lmdb_size_test.c => ldb_no_lmdb_test.c}   | 70 +++-------------------
 lib/ldb/tests/python/api.py                        | 41 +++++++++++++
 lib/ldb/tests/python/index.py                      |  4 ++
 lib/ldb/wscript                                    | 30 ++++++----
 librpc/ndr/ndr_spoolss_buf.c                       |  4 +-
 source4/auth/sam.c                                 |  4 +-
 6 files changed, 78 insertions(+), 75 deletions(-)
 copy lib/ldb/tests/{ldb_lmdb_size_test.c => ldb_no_lmdb_test.c} (67%)


Changeset truncated at 500 lines:

diff --git a/lib/ldb/tests/ldb_lmdb_size_test.c b/lib/ldb/tests/ldb_no_lmdb_test.c
similarity index 67%
copy from lib/ldb/tests/ldb_lmdb_size_test.c
copy to lib/ldb/tests/ldb_no_lmdb_test.c
index af015fa72b5..8e5a6eee8d2 100644
--- a/lib/ldb/tests/ldb_lmdb_size_test.c
+++ b/lib/ldb/tests/ldb_no_lmdb_test.c
@@ -1,8 +1,7 @@
 /*
- * lmdb backend specific tests for ldb
- * Tests for truncated index keys
+ * Ensure lmdb backend is disabled
  *
- *  Copyright (C) Andrew Bartlett <abartlet at samba.org> 2018
+ *  Copyright (C) Mathieu Parent <math.parent at gmail.com> 2019
  *
  * 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
@@ -20,11 +19,9 @@
  */
 
 /*
- * These tests confirm that database sizes of > 4GB are supported
- * Due to the disk space requirement they are not run as part of the normal
- * self test runs.
+ * Ensure lmdb backend is disabled
  *
- * Setup and tear down code copied from ldb_mod_op_test.c
+ * Setup and tear down code copied  from ldb_lmdb_test.c
  */
 
 /*
@@ -51,15 +48,6 @@
 #include <talloc.h>
 #include <tevent.h>
 #include <ldb.h>
-#include <ldb_module.h>
-#include <ldb_private.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <sys/wait.h>
-
-#include <lmdb.h>
-
 
 #define TEST_BE  "mdb"
 
@@ -137,7 +125,7 @@ static int ldbtest_setup(void **state)
 	ldbtest_noconn_setup((void **) &test_ctx);
 
 	ret = ldb_connect(test_ctx->ldb, test_ctx->dbpath, 0, NULL);
-	assert_int_equal(ret, 0);
+	assert_int_equal(ret, LDB_ERR_OTHER);
 
 	*state = test_ctx;
 	return 0;
@@ -151,57 +139,17 @@ static int ldbtest_teardown(void **state)
 	return 0;
 }
 
-static void test_db_size_gt_4GB(void **state)
+static void test_ldb_lmdb_not_found(void **state)
 {
-	int ret, x;
-	struct ldb_message *msg;
-	struct ldbtest_ctx *test_ctx = talloc_get_type_abort(*state,
-							struct ldbtest_ctx);
-	const int MB = 1024 * 1024;
-	char *blob = NULL;
-
-	TALLOC_CTX *tmp_ctx;
-
-	tmp_ctx = talloc_new(test_ctx);
-	assert_non_null(tmp_ctx);
-
-
-	blob = talloc_zero_size(tmp_ctx, (MB + 1));
-	assert_non_null(blob);
-	memset(blob, 'x', MB);
-
-
-	for (x = 0; x < 6144; x++) {
-		msg = ldb_msg_new(tmp_ctx);
-		assert_non_null(msg);
-
-		msg->dn = ldb_dn_new_fmt(msg, test_ctx->ldb, "dc=test%d", x);
-		assert_non_null(msg->dn);
-
-		ldb_transaction_start(test_ctx->ldb);
-		ret = ldb_msg_add_string(msg, "blob", blob);
-		assert_int_equal(ret, 0);
-
-		ret = ldb_add(test_ctx->ldb, msg);
-		assert_int_equal(ret, 0);
-		ldb_transaction_commit(test_ctx->ldb);
-
-		TALLOC_FREE(msg);
-	}
-	talloc_free(tmp_ctx);
-	{
-		struct stat s;
-		ret = stat(test_ctx->dbfile, &s);
-		assert_int_equal(ret, 0);
-		assert_true(s.st_size > (6144LL * MB));
-	}
+	// Actual test in ldbtest_setup
+	assert_int_equal(0, 0);
 }
 
 int main(int argc, const char **argv)
 {
 	const struct CMUnitTest tests[] = {
 		cmocka_unit_test_setup_teardown(
-			test_db_size_gt_4GB,
+			test_ldb_lmdb_not_found,
 			ldbtest_setup,
 			ldbtest_teardown),
 	};
diff --git a/lib/ldb/tests/python/api.py b/lib/ldb/tests/python/api.py
index e8826b5af3b..0c4e269239b 100755
--- a/lib/ldb/tests/python/api.py
+++ b/lib/ldb/tests/python/api.py
@@ -710,6 +710,8 @@ class SimpleLdb(LdbBaseTest):
 class SimpleLdbLmdb(SimpleLdb):
 
     def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') == '0':
+            self.skipTest("No lmdb backend")
         self.prefix = MDB_PREFIX
         self.index = MDB_INDEX_OBJ
         super(SimpleLdbLmdb, self).setUp()
@@ -718,6 +720,29 @@ class SimpleLdbLmdb(SimpleLdb):
         super(SimpleLdbLmdb, self).tearDown()
 
 
+class SimpleLdbNoLmdb(LdbBaseTest):
+
+    def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') != '0':
+            self.skipTest("lmdb backend enabled")
+        self.prefix = MDB_PREFIX
+        self.index = MDB_INDEX_OBJ
+        super(SimpleLdbNoLmdb, self).setUp()
+
+    def tearDown(self):
+        super(SimpleLdbNoLmdb, self).tearDown()
+
+    def test_lmdb_disabled(self):
+        self.testdir = tempdir()
+        self.filename = os.path.join(self.testdir, "test.ldb")
+        try:
+            self.ldb = ldb.Ldb(self.url(), flags=self.flags())
+            self.fail("Should have failed on missing LMDB")
+        except ldb.LdbError as err:
+            enum = err.args[0]
+            self.assertEqual(enum, ldb.LDB_ERR_OTHER)
+
+
 class SearchTests(LdbBaseTest):
     def tearDown(self):
         shutil.rmtree(self.testdir)
@@ -1369,6 +1394,8 @@ class SearchTests(LdbBaseTest):
 class SearchTestsLmdb(SearchTests):
 
     def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') == '0':
+            self.skipTest("No lmdb backend")
         self.prefix = MDB_PREFIX
         self.index = MDB_INDEX_OBJ
         super(SearchTestsLmdb, self).setUp()
@@ -1510,6 +1537,8 @@ class GUIDAndOneLevelIndexedSearchTests(SearchTests):
 class GUIDIndexedSearchTestsLmdb(GUIDIndexedSearchTests):
 
     def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') == '0':
+            self.skipTest("No lmdb backend")
         self.prefix = MDB_PREFIX
         super(GUIDIndexedSearchTestsLmdb, self).setUp()
 
@@ -1520,6 +1549,8 @@ class GUIDIndexedSearchTestsLmdb(GUIDIndexedSearchTests):
 class GUIDIndexedDNFilterSearchTestsLmdb(GUIDIndexedDNFilterSearchTests):
 
     def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') == '0':
+            self.skipTest("No lmdb backend")
         self.prefix = MDB_PREFIX
         super(GUIDIndexedDNFilterSearchTestsLmdb, self).setUp()
 
@@ -1530,6 +1561,8 @@ class GUIDIndexedDNFilterSearchTestsLmdb(GUIDIndexedDNFilterSearchTests):
 class GUIDAndOneLevelIndexedSearchTestsLmdb(GUIDAndOneLevelIndexedSearchTests):
 
     def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') == '0':
+            self.skipTest("No lmdb backend")
         self.prefix = MDB_PREFIX
         super(GUIDAndOneLevelIndexedSearchTestsLmdb, self).setUp()
 
@@ -1740,6 +1773,8 @@ class AddModifyTests(LdbBaseTest):
 class AddModifyTestsLmdb(AddModifyTests):
 
     def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') == '0':
+            self.skipTest("No lmdb backend")
         self.prefix = MDB_PREFIX
         self.index = MDB_INDEX_OBJ
         super(AddModifyTestsLmdb, self).setUp()
@@ -1868,6 +1903,8 @@ class TransIndexedAddModifyTests(IndexedAddModifyTests):
 class GuidIndexedAddModifyTestsLmdb(GUIDIndexedAddModifyTests):
 
     def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') == '0':
+            self.skipTest("No lmdb backend")
         self.prefix = MDB_PREFIX
         super(GuidIndexedAddModifyTestsLmdb, self).setUp()
 
@@ -1878,6 +1915,8 @@ class GuidIndexedAddModifyTestsLmdb(GUIDIndexedAddModifyTests):
 class GuidTransIndexedAddModifyTestsLmdb(GUIDTransIndexedAddModifyTests):
 
     def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') == '0':
+            self.skipTest("No lmdb backend")
         self.prefix = MDB_PREFIX
         super(GuidTransIndexedAddModifyTestsLmdb, self).setUp()
 
@@ -2933,6 +2972,8 @@ class LdbResultTests(LdbBaseTest):
 class LdbResultTestsLmdb(LdbResultTests):
 
     def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') == '0':
+            self.skipTest("No lmdb backend")
         self.prefix = MDB_PREFIX
         self.index = MDB_INDEX_OBJ
         super(LdbResultTestsLmdb, self).setUp()
diff --git a/lib/ldb/tests/python/index.py b/lib/ldb/tests/python/index.py
index 3652901888e..48dbaccfa56 100755
--- a/lib/ldb/tests/python/index.py
+++ b/lib/ldb/tests/python/index.py
@@ -1286,6 +1286,8 @@ class MaxIndexKeyLengthTests(LdbBaseTest):
 class MaxIndexKeyLengthTestsLmdb(MaxIndexKeyLengthTests):
 
     def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') == '0':
+            self.skipTest("No lmdb backend")
         self.prefix = MDB_PREFIX
         super(MaxIndexKeyLengthTestsLmdb, self).setUp()
 
@@ -1297,6 +1299,8 @@ class MaxIndexKeyLengthTestsLmdb(MaxIndexKeyLengthTests):
 class RejectSubDBIndex(LdbBaseTest):
 
     def setUp(self):
+        if os.environ.get('HAVE_LMDB', '1') == '0':
+            self.skipTest("No lmdb backend")
         self.prefix = MDB_PREFIX
         super(RejectSubDBIndex, self).setUp()
         self.testdir = tempdir()
diff --git a/lib/ldb/wscript b/lib/ldb/wscript
index c59d4ead7b9..8f14b09b583 100644
--- a/lib/ldb/wscript
+++ b/lib/ldb/wscript
@@ -197,6 +197,7 @@ def configure(conf):
 
         if conf.CHECK_FUNCS_IN('mdb_env_create', 'lmdb', headers='lmdb.h'):
             conf.DEFINE('HAVE_LMDB', '1')
+            conf.env.HAVE_LMDB = True
 
 
     conf.DEFINE('HAVE_CONFIG_H', 1, add_to_cflags=True)
@@ -539,21 +540,26 @@ def build(bld):
                              cflags='-DTEST_BE=\"mdb\"',
                              deps='cmocka ldb',
                              install=False)
+        else:
+            bld.SAMBA_BINARY('ldb_no_lmdb_test',
+                             source='tests/ldb_no_lmdb_test.c',
+                             deps='cmocka ldb',
+                             install=False)
 
 def test(ctx):
     '''run ldb testsuite'''
     env = samba_utils.LOAD_ENVIRONMENT()
     ctx.env = env
 
-    if not env.HAVE_LMDB:
-        raise Errors.WafError('make test called, but ldb was built '
-                             '--without-ldb-lmdb')
-
     test_prefix = "%s/st" % (Context.g_module.out)
     shutil.rmtree(test_prefix, ignore_errors=True)
     os.makedirs(test_prefix)
     os.environ['TEST_DATA_PREFIX'] = test_prefix
     os.environ['LDB_MODULES_PATH'] = Context.g_module.out + "/modules/ldb"
+    if env.HAVE_LMDB:
+        os.environ['HAVE_LMDB'] = '1'
+    else:
+        os.environ['HAVE_LMDB'] = '0'
     samba_utils.ADD_LD_LIBRARY_PATH('bin/shared')
     samba_utils.ADD_LD_LIBRARY_PATH('bin/shared/private')
 
@@ -578,14 +584,18 @@ def test(ctx):
                  'ldb_msg_test',
                  'ldb_tdb_kv_ops_test',
                  'ldb_tdb_test',
-                 'ldb_mdb_mod_op_test',
-                 'ldb_lmdb_test',
-                 # we don't want to run ldb_lmdb_size_test (which proves we can
-                 # fit > 4G of data into the DB), it would fill up the disk on
-                 # many of our test instances
-                 'ldb_mdb_kv_ops_test',
                  'ldb_match_test']
 
+    if env.HAVE_LMDB:
+        test_exes += ['ldb_mdb_mod_op_test',
+                     'ldb_lmdb_test',
+                     # we don't want to run ldb_lmdb_size_test (which proves we can
+                     # fit > 4G of data into the DB), it would fill up the disk on
+                     # many of our test instances
+                     'ldb_mdb_kv_ops_test']
+    else:
+        test_exes += ['ldb_no_lmdb_test']
+
     for test_exe in test_exes:
             cmd = os.path.join(Context.g_module.out, test_exe)
             cmocka_ret = cmocka_ret or samba_utils.RUN_COMMAND(cmd)
diff --git a/librpc/ndr/ndr_spoolss_buf.c b/librpc/ndr/ndr_spoolss_buf.c
index c1d175fcbe5..244d692dca8 100644
--- a/librpc/ndr/ndr_spoolss_buf.c
+++ b/librpc/ndr/ndr_spoolss_buf.c
@@ -43,7 +43,8 @@
 } while(0)
 
 #define NDR_SPOOLSS_PUSH_ENUM_OUT(fn) do { \
-	struct ndr_push *_ndr_info;\
+	DATA_BLOB _data_blob_info = data_blob_null;\
+	struct ndr_push *_ndr_info = NULL;\
 	_r.in.level	= r->in.level;\
 	_r.in.buffer	= r->in.buffer;\
 	_r.in.offered	= r->in.offered;\
@@ -56,7 +57,6 @@
 			"SPOOLSS Buffer: *r->out.info but there's no r->in.buffer");\
 	}\
 	if (r->in.buffer) {\
-		DATA_BLOB _data_blob_info;\
 		_ndr_info = ndr_push_init_ctx(ndr);\
 		NDR_ERR_HAVE_NO_MEMORY(_ndr_info);\
 		_ndr_info->flags= ndr->flags;\
diff --git a/source4/auth/sam.c b/source4/auth/sam.c
index 709e901b45b..6c7fb221699 100644
--- a/source4/auth/sam.c
+++ b/source4/auth/sam.c
@@ -364,7 +364,7 @@ _PUBLIC_ NTSTATUS authsam_make_user_info_dc(TALLOC_CTX *mem_ctx,
 	NT_STATUS_HAVE_NO_MEMORY(user_info_dc);
 
 	tmp_ctx = talloc_new(user_info_dc);
-	if (user_info_dc == NULL) {
+	if (tmp_ctx == NULL) {
 		TALLOC_FREE(user_info_dc);
 		return NT_STATUS_NO_MEMORY;
 	}
@@ -377,7 +377,7 @@ _PUBLIC_ NTSTATUS authsam_make_user_info_dc(TALLOC_CTX *mem_ctx,
 
 	num_sids = 2;
 
-	account_sid = samdb_result_dom_sid(user_info_dc, msg, "objectSid");
+	account_sid = samdb_result_dom_sid(tmp_ctx, msg, "objectSid");
 	if (account_sid == NULL) {
 		TALLOC_FREE(user_info_dc);
 		return NT_STATUS_NO_MEMORY;


-- 
Samba Shared Repository



More information about the samba-cvs mailing list