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 <ibouk...@gmail.com>
Date:   Sun Jan 20 14:56:30 2019 +0200

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

commit ce83b21be8aaa537ce3cb8e2ed0bc86f33024159
Author: Isaac Boukris <ibouk...@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 <ibouk...@gmail.com>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Garming Sam <garm...@catalyst.net.nz>

commit 6da3664f8a11397fd3fb38e89c2432b8bf321e59
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: David Disseldorp <dd...@samba.org>
    Reviewed-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Björn Jacke <bja...@samba.org>
    Reviewed-by: Günther Deschner <g...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Garming Sam <garm...@catalyst.net.nz>

commit c059b8cb82c7c2443e74aa780646607606f41e4b
Author: Mathieu Parent <math.par...@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.par...@gmail.com>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Garming Sam <garm...@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 <abart...@samba.org> 2018
+ *  Copyright (C) Mathieu Parent <math.par...@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

Reply via email to