[SCM] Samba Shared Repository - branch v4-7-test updated
Stefan Metzmacher
metze at samba.org
Mon Oct 2 11:18:02 UTC 2017
The branch, v4-7-test has been updated
via 6a67866 lib/util/run_cmd: use a cleanup function instead of a destructor
via 31eefb6 lib/util/run_cmd: remove a printf
via c7f33ca lib/util/run_cmd: ensure fd_stdin gets set to -1 in the destructor
via 634514a lib/util/run_cmd: prevent zombies in samba_runcmd_send on timeout
via 3711ec4 selftest: Check re-opening sam.ldb corrects the @ATTRIBUTES and @INDEXLIST
from 16594ab VERSION: Bump version up to 4.7.1...
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-7-test
- Log -----------------------------------------------------------------
commit 6a678665aec5ec026edb49841f037703ea2fd5a7
Author: Ralph Boehme <slow at samba.org>
Date: Fri Sep 29 13:07:53 2017 +0200
lib/util/run_cmd: use a cleanup function instead of a destructor
Bug: https://bugzilla.samba.org/show_bug.cgi?id=13062
Pair-programmed-with: Stefan Metzmacher <metze at samba.org>
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Signed-off-by: Ralph Boehme <slow at samba.org>
Autobuild-User(master): Ralph Böhme <slow at samba.org>
Autobuild-Date(master): Sat Sep 30 12:14:57 CEST 2017 on sn-devel-144
(cherry picked from commit 6539cc8a24204697b20506896c401e7b40eee928)
Autobuild-User(v4-7-test): Stefan Metzmacher <metze at samba.org>
Autobuild-Date(v4-7-test): Mon Oct 2 13:17:15 CEST 2017 on sn-devel-144
commit 31eefb6c98418cdde9dcee383262a298ae956ac4
Author: Ralph Boehme <slow at samba.org>
Date: Fri Sep 29 13:07:26 2017 +0200
lib/util/run_cmd: remove a printf
Bug: https://bugzilla.samba.org/show_bug.cgi?id=13062
Pair-programmed-with: Stefan Metzmacher <metze at samba.org>
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Signed-off-by: Ralph Boehme <slow at samba.org>
(cherry picked from commit 94a8331e5425b735f9e2c0121afc2fb108bec891)
commit c7f33ca3183a68be725587044ce8cf0c44d5d549
Author: Ralph Boehme <slow at samba.org>
Date: Fri Sep 29 13:06:08 2017 +0200
lib/util/run_cmd: ensure fd_stdin gets set to -1 in the destructor
Bug: https://bugzilla.samba.org/show_bug.cgi?id=13062
Pair-programmed-with: Stefan Metzmacher <metze at samba.org>
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Signed-off-by: Ralph Boehme <slow at samba.org>
(cherry picked from commit 4aaf072d1fd732abf2cbea135d508260cdafa4eb)
commit 634514a8d431b45a070f1d052b552bcf5f0a3bee
Author: Ralph Boehme <slow at samba.org>
Date: Fri Sep 29 12:45:24 2017 +0200
lib/util/run_cmd: prevent zombies in samba_runcmd_send on timeout
Ensure the state desctructor calls tfork_destroy to reap the waiter and
worker processes. Otherwise we leave the waiter process as a zombie
behind us as we never call waitpid on it in case of a timeout
or talloc_free() from the caller.
Bug: https://bugzilla.samba.org/show_bug.cgi?id=13062
Pair-programmed-with: Stefan Metzmacher <metze at samba.org>
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Signed-off-by: Ralph Boehme <slow at samba.org>
(cherry picked from commit 9a8eeabd95afca2e88666b3e8f2af954dbf23ba9)
commit 3711ec4dafc098668eb0c1bee9dee62838024a59
Author: Andrew Bartlett <abartlet at samba.org>
Date: Wed Sep 13 16:13:06 2017 +1200
selftest: Check re-opening sam.ldb corrects the @ATTRIBUTES and @INDEXLIST
https://bugzilla.samba.org/show_bug.cgi?id=13025
Signed-off-by: Andrew Bartlett <abartlet at samba.org>
Reviewed-by: Garming Sam <garming at catalyst.net.nz>
(cherry picked from commit 51be27522caffde8a3806f8c0c877a0f85eaf398)
-----------------------------------------------------------------------
Summary of changes:
lib/util/util_runcmd.c | 19 +++++-----
python/samba/tests/dsdb_schema_attributes.py | 53 ++++++++++++++++++++++++++++
2 files changed, 64 insertions(+), 8 deletions(-)
Changeset truncated at 500 lines:
diff --git a/lib/util/util_runcmd.c b/lib/util/util_runcmd.c
index 6077fdd..42d84a8 100644
--- a/lib/util/util_runcmd.c
+++ b/lib/util/util_runcmd.c
@@ -32,18 +32,21 @@
#include "../lib/util/tfork.h"
#include "../lib/util/sys_rw.h"
-static int samba_runcmd_state_destructor(struct samba_runcmd_state *state)
+static void samba_runcmd_cleanup_fn(struct tevent_req *req,
+ enum tevent_req_state req_state)
{
- if (state->pid > 0) {
- kill(state->pid, SIGKILL);
- waitpid(state->pid, NULL, 0);
- state->pid = -1;
+ struct samba_runcmd_state *state = tevent_req_data(
+ req, struct samba_runcmd_state);
+
+ if (state->tfork != NULL) {
+ tfork_destroy(&state->tfork);
}
+ state->pid = -1;
if (state->fd_stdin != -1) {
close(state->fd_stdin);
+ state->fd_stdin = -1;
}
- return 0;
}
static void samba_runcmd_io_handler(struct tevent_context *ev,
@@ -110,7 +113,6 @@ struct tevent_req *samba_runcmd_send(TALLOC_CTX *mem_ctx,
state->tfork = tfork_create();
if (state->tfork == NULL) {
- printf("state->tfork == NULL\n");
close(p1[0]);
close(p1[1]);
close(p2[0]);
@@ -141,7 +143,7 @@ struct tevent_req *samba_runcmd_send(TALLOC_CTX *mem_ctx,
smb_set_close_on_exec(state->fd_stderr);
smb_set_close_on_exec(state->fd_status);
- talloc_set_destructor(state, samba_runcmd_state_destructor);
+ tevent_req_set_cleanup_fn(req, samba_runcmd_cleanup_fn);
state->fde_stdout = tevent_add_fd(ev, state,
state->fd_stdout,
@@ -275,6 +277,7 @@ static void samba_runcmd_io_handler(struct tevent_context *ev,
tevent_req_error(req, errno);
return;
}
+ state->pid = -1;
TALLOC_FREE(fde);
if (WIFEXITED(status)) {
diff --git a/python/samba/tests/dsdb_schema_attributes.py b/python/samba/tests/dsdb_schema_attributes.py
index df6c8bb..2bebbb5 100644
--- a/python/samba/tests/dsdb_schema_attributes.py
+++ b/python/samba/tests/dsdb_schema_attributes.py
@@ -173,3 +173,56 @@ systemOnly: FALSE
self.assertIn(attr_ldap_name, [str(x) for x in idx_res[0]["@IDXATTR"]])
self.assertIn(attr_ldap_name2, [str(x) for x in idx_res[0]["@IDXATTR"]])
+
+ def test_modify_at_attributes(self):
+ m = {"dn": "@ATTRIBUTES",
+ "@TEST_EXTRA": ["HIDDEN"]
+ }
+
+ msg = ldb.Message.from_dict(self.samdb, m, ldb.FLAG_MOD_ADD)
+ self.samdb.modify(msg)
+
+ res = self.samdb.search(base="@ATTRIBUTES", scope=ldb.SCOPE_BASE,
+ attrs=["@TEST_EXTRA"])
+ self.assertEquals(len(res), 1)
+ self.assertEquals(str(res[0].dn), "@ATTRIBUTES")
+ self.assertEquals(len(res[0]), 1)
+ self.assertTrue("@TEST_EXTRA" in res[0])
+ self.assertEquals(len(res[0]["@TEST_EXTRA"]), 1)
+ self.assertEquals(res[0]["@TEST_EXTRA"][0], "HIDDEN")
+
+ samdb2 = samba.tests.connect_samdb(self.lp.samdb_url())
+
+ res = self.samdb.search(base="@ATTRIBUTES", scope=ldb.SCOPE_BASE,
+ attrs=["@TEST_EXTRA"])
+ self.assertEquals(len(res), 1)
+ self.assertEquals(str(res[0].dn), "@ATTRIBUTES")
+ self.assertEquals(len(res[0]), 0)
+ self.assertFalse("@TEST_EXTRA" in res[0])
+
+
+ def test_modify_at_indexlist(self):
+ m = {"dn": "@INDEXLIST",
+ "@TEST_EXTRA": ["1"]
+ }
+
+ msg = ldb.Message.from_dict(self.samdb, m, ldb.FLAG_MOD_ADD)
+ self.samdb.modify(msg)
+
+ res = self.samdb.search(base="@INDEXLIST", scope=ldb.SCOPE_BASE,
+ attrs=["@TEST_EXTRA"])
+ self.assertEquals(len(res), 1)
+ self.assertEquals(str(res[0].dn), "@INDEXLIST")
+ self.assertEquals(len(res[0]), 1)
+ self.assertTrue("@TEST_EXTRA" in res[0])
+ self.assertEquals(len(res[0]["@TEST_EXTRA"]), 1)
+ self.assertEquals(res[0]["@TEST_EXTRA"][0], "1")
+
+ samdb2 = samba.tests.connect_samdb(self.lp.samdb_url())
+
+ res = self.samdb.search(base="@INDEXLIST", scope=ldb.SCOPE_BASE,
+ attrs=["@TEST_EXTRA"])
+ self.assertEquals(len(res), 1)
+ self.assertEquals(str(res[0].dn), "@INDEXLIST")
+ self.assertEquals(len(res[0]), 0)
+ self.assertFalse("@TEST_EXTRA" in res[0])
--
Samba Shared Repository
More information about the samba-cvs
mailing list