[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