From d9553e8fd19a0832f3fbd19ffcc595a701d87e34 Mon Sep 17 00:00:00 2001 From: "Gerald (Jerry) Carter" Date: Mon, 17 Dec 2007 17:33:48 -0600 Subject: Fix a segv in winbindd caused by trying to free an fstring. Make a copy of the machine_password and machine_account strings in all conditional paths so that SAFE_FREE() will always be valid. (This used to be commit 194c4640b158457a6d0d5ea91e28d41d619c77de) --- source3/winbindd/winbindd_cm.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'source3') diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index cb366a293c..6c5633c2b2 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -2005,11 +2005,15 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, domain_name = domain->name; goto schannel; } else { - machine_password = conn_pwd; - machine_account = conn->cli->user_name; + machine_password = SMB_STRDUP(conn_pwd); + machine_account = SMB_STRDUP(conn->cli->user_name); domain_name = conn->cli->domain; } + if (!machine_password || !machine_account) { + result = NT_STATUS_NO_MEMORY; + goto done; + } /* We have an authenticated connection. Use a NTLMSSP SPNEGO authenticated SAMR pipe with sign & seal. */ -- cgit From a3081ba5b52fd6174b4e84f69c8116b47fab6f0c Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Tue, 18 Dec 2007 01:30:52 +0100 Subject: Prevent another segfault. Michael (This used to be commit 0a9874c1c76c0ccc71caba7ee85a0ee1a91808c5) --- source3/passdb/passdb.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source3') diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c index 9311b8a74e..4228f6c32f 100644 --- a/source3/passdb/passdb.c +++ b/source3/passdb/passdb.c @@ -1552,7 +1552,9 @@ bool get_trust_pw_clear(const char *domain, char **ret_pwd, return false; } - *channel = SEC_CHAN_DOMAIN; + if (channel != NULL) { + *channel = SEC_CHAN_DOMAIN; + } if (account_name != NULL) { *account_name = lp_workgroup(); -- cgit From a62cc944435fb9964c765cb9495f18308823ac8f Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Tue, 18 Dec 2007 01:55:48 +0100 Subject: Fix logic error in cm_connect_sam(). Don't fall back to schannel when trust creds could be obtained. This is still not complete, but I am getting closer. Michael (This used to be commit 7c9fa597d684a25822b4db6615f28336f2d64ef3) --- source3/winbindd/winbindd_cm.c | 1 - 1 file changed, 1 deletion(-) (limited to 'source3') diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index 6c5633c2b2..8ea815535f 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -2003,7 +2003,6 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, goto schannel; } domain_name = domain->name; - goto schannel; } else { machine_password = SMB_STRDUP(conn_pwd); machine_account = SMB_STRDUP(conn->cli->user_name); -- cgit