[SCM] Samba Shared Repository - branch v3-2-test updated - release-3-2-0pre2-3056-g3a2a709

Jeremy Allison jra at samba.org
Mon Sep 29 18:25:04 GMT 2008


The branch, v3-2-test has been updated
       via  3a2a70996919a7ee08fea40b8e5f1cf2e3bd7caf (commit)
      from  3cba8305bd32c7a83fd9c39eaea953b8a0199b22 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 3a2a70996919a7ee08fea40b8e5f1cf2e3bd7caf
Author: Andrew Tridgell <tridge at samba.org>
Date:   Mon Sep 29 11:24:00 2008 -0700

    fixed segv on startup with trusted domains
    
    With some setups, idmap_tdb2_allocate_id can be called before the
    allocate backend is initialised, leading to a segv. This change
    ensures that the db is opened in all paths that use it

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

Summary of changes:
 source/winbindd/idmap_tdb2.c |   22 +++++++++++++++++++++-
 1 files changed, 21 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/winbindd/idmap_tdb2.c b/source/winbindd/idmap_tdb2.c
index ab89e61..ffb10b4 100644
--- a/source/winbindd/idmap_tdb2.c
+++ b/source/winbindd/idmap_tdb2.c
@@ -235,7 +235,9 @@ static NTSTATUS idmap_tdb2_allocate_id(struct unixid *xid)
 	NTSTATUS status;
 
 	status = idmap_tdb2_open_perm_db();
-	NT_STATUS_NOT_OK_RETURN(status);
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
 
 	/* Get current high water mark */
 	switch (xid->type) {
@@ -297,6 +299,12 @@ static NTSTATUS idmap_tdb2_get_hwm(struct unixid *xid)
 	const char *hwmtype;
 	uint32_t hwm;
 	uint32_t high_hwm;
+	NTSTATUS status;
+
+	status = idmap_tdb2_open_perm_db();
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
 
 	/* Get current high water mark */
 	switch (xid->type) {
@@ -552,6 +560,12 @@ static NTSTATUS idmap_tdb2_id_to_sid(struct idmap_tdb2_context *ctx, struct id_m
 	NTSTATUS ret;
 	TDB_DATA data;
 	char *keystr;
+	NTSTATUS status;
+
+	status = idmap_tdb2_open_perm_db();
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
 
 	if (!ctx || !map) {
 		return NT_STATUS_INVALID_PARAMETER;
@@ -647,6 +661,12 @@ static NTSTATUS idmap_tdb2_sid_to_id(struct idmap_tdb2_context *ctx, struct id_m
 	TDB_DATA data;
 	char *keystr;
 	unsigned long rec_id = 0;
+	NTSTATUS status;
+
+	status = idmap_tdb2_open_perm_db();
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
 
 	if ((keystr = sid_string_talloc(ctx, map->sid)) == NULL) {
 		DEBUG(0, ("Out of memory!\n"));


-- 
Samba Shared Repository


More information about the samba-cvs mailing list