[SCM] Samba Shared Repository - branch v4-0-test updated -
release-4-0-0alpha5-198-gc01fee8
Stefan Metzmacher
metze at samba.org
Fri Aug 1 14:11:47 GMT 2008
The branch, v4-0-test has been updated
via c01fee80a79cd9e0f7bb295333bb03bd37328d05 (commit)
via 699e3cdb52acdf2524347d8c053730306c579dd9 (commit)
via c2cc8ef943e8c2e02edb1eb20214de245cc6914c (commit)
via afd07073b9caa4b5f7d2ad747e79afaec4203506 (commit)
from 816bb64a56a75d1eb5e879b4abf211af27243686 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test
- Log -----------------------------------------------------------------
commit c01fee80a79cd9e0f7bb295333bb03bd37328d05
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Aug 1 16:10:06 2008 +0200
auth/ntlmssp: don't crash when the backend give no challenge
metze
commit 699e3cdb52acdf2524347d8c053730306c579dd9
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Aug 1 15:53:01 2008 +0200
auth_server: fix the logic of server_get_challenge()
metze
commit c2cc8ef943e8c2e02edb1eb20214de245cc6914c
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Aug 1 15:19:27 2008 +0200
auth_server: fix segfault reported by Julien Kerihuel <j.kerihuel at openchange.org>
metze
commit afd07073b9caa4b5f7d2ad747e79afaec4203506
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Aug 1 09:20:46 2008 +0200
Revert "Start implementind domain trusts in our KDC."
This reverts commit 736ce50afd9da9b5fbc3db777fd5341dfa4b721a.
This breaks the build...
metze
-----------------------------------------------------------------------
Summary of changes:
source/auth/ntlm/auth_server.c | 10 ++++----
source/auth/ntlmssp/ntlmssp_server.c | 6 +++++
source/kdc/hdb-ldb.c | 40 ++++++----------------------------
3 files changed, 18 insertions(+), 38 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/auth/ntlm/auth_server.c b/source/auth/ntlm/auth_server.c
index f154cf0..42606c1 100644
--- a/source/auth/ntlm/auth_server.c
+++ b/source/auth/ntlm/auth_server.c
@@ -70,7 +70,7 @@ static NTSTATUS server_get_challenge(struct auth_method_context *ctx, TALLOC_CTX
io.in.called_name = strupper_talloc(mem_ctx, io.in.dest_host);
/* We don't want to get as far as the session setup */
- io.in.credentials = NULL;
+ io.in.credentials = cli_credentials_init_anon(mem_ctx);
io.in.service = NULL;
io.in.workgroup = ""; /* only used with SPNEGO, disabled above */
@@ -79,10 +79,10 @@ static NTSTATUS server_get_challenge(struct auth_method_context *ctx, TALLOC_CTX
status = smb_composite_connect(&io, mem_ctx, lp_resolve_context(ctx->auth_ctx->lp_ctx),
ctx->auth_ctx->event_ctx);
- if (!NT_STATUS_IS_OK(status)) {
- *_blob = io.out.tree->session->transport->negotiate.secblob;
- ctx->private_data = talloc_steal(ctx, io.out.tree->session);
- }
+ NT_STATUS_NOT_OK_RETURN(status);
+
+ *_blob = io.out.tree->session->transport->negotiate.secblob;
+ ctx->private_data = talloc_steal(ctx, io.out.tree->session);
return NT_STATUS_OK;
}
diff --git a/source/auth/ntlmssp/ntlmssp_server.c b/source/auth/ntlmssp/ntlmssp_server.c
index dfc5940..838596e 100644
--- a/source/auth/ntlmssp/ntlmssp_server.c
+++ b/source/auth/ntlmssp/ntlmssp_server.c
@@ -157,6 +157,10 @@ NTSTATUS ntlmssp_server_negotiate(struct gensec_security *gensec_security,
/* Ask our caller what challenge they would like in the packet */
cryptkey = gensec_ntlmssp_state->get_challenge(gensec_ntlmssp_state);
+ if (!cryptkey) {
+ DEBUG(1, ("ntlmssp_server_negotiate: backend doesn't give a challenge\n"));
+ return NT_STATUS_INTERNAL_ERROR;
+ }
/* Check if we may set the challenge */
if (!gensec_ntlmssp_state->may_set_challenge(gensec_ntlmssp_state)) {
@@ -614,6 +618,8 @@ static const uint8_t *auth_ntlmssp_get_challenge(const struct gensec_ntlmssp_sta
status = auth_get_challenge(gensec_ntlmssp_state->auth_context, &chal);
if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(1, ("auth_ntlmssp_get_challenge: failed to get challenge: %s\n",
+ nt_errstr(status)));
return NULL;
}
diff --git a/source/kdc/hdb-ldb.c b/source/kdc/hdb-ldb.c
index a997eb0..8f8ce30 100644
--- a/source/kdc/hdb-ldb.c
+++ b/source/kdc/hdb-ldb.c
@@ -853,8 +853,7 @@ static krb5_error_code LDB_fetch_krbtgt(krb5_context context, HDB *db,
{
krb5_error_code ret;
struct ldb_message **msg = NULL;
- struct ldb_message **realm_ref_msg_1 = NULL;
- struct ldb_message **realm_ref_msg_2 = NULL;
+ struct ldb_message **realm_ref_msg = NULL;
struct ldb_dn *realm_dn;
krb5_principal alloc_principal = NULL;
@@ -865,18 +864,14 @@ static krb5_error_code LDB_fetch_krbtgt(krb5_context context, HDB *db,
}
/* krbtgt case. Either us or a trusted realm */
-
if ((LDB_lookup_realm(context, (struct ldb_context *)db->hdb_db,
- mem_ctx, principal->realm, &realm_ref_msg_1) == 0)
- && (LDB_lookup_realm(context, (struct ldb_context *)db->hdb_db,
- mem_ctx, principal->name.name_string.val[1], &realm_ref_msg_2) == 0)
- && (ldb_dn_cmp(realm_ref_msg_1[0]->dn, realm_ref_msg_1[0]->dn) == 0)) {
+ mem_ctx, principal->name.name_string.val[1], &realm_ref_msg) == 0)) {
/* us */
/* Cludge, cludge cludge. If the realm part of krbtgt/realm,
* is in our db, then direct the caller at our primary
- * krbtgt */
+ * krgtgt */
- const char *dnsdomain = ldb_msg_find_attr_as_string(realm_ref_msg_1[0], "dnsRoot", NULL);
+ const char *dnsdomain = ldb_msg_find_attr_as_string(realm_ref_msg[0], "dnsRoot", NULL);
char *realm_fixed = strupper_talloc(mem_ctx, dnsdomain);
if (!realm_fixed) {
krb5_set_error_string(context, "strupper_talloc: out of memory");
@@ -896,26 +891,8 @@ static krb5_error_code LDB_fetch_krbtgt(krb5_context context, HDB *db,
return ENOMEM;
}
principal = alloc_principal;
- realm_dn = samdb_result_dn((struct ldb_context *)db->hdb_db, mem_ctx, realm_ref_msg_1[0], "nCName", NULL);
+ realm_dn = samdb_result_dn((struct ldb_context *)db->hdb_db, mem_ctx, realm_ref_msg[0], "nCName", NULL);
} else {
- enum direction {
- INBOUND,
- OUTBOUND
- }
-
- struct loadparm_context *lp_ctx = talloc_get_type(ldb_get_opaque(ldb, "loadparm"), struct loadparm_context *);
- /* Either an inbound or outbound trust */
-
- if (strcasecmp(lp_realm(lp_ctx), principal->realm) == 0) {
- /* look for inbound trust */
- }
-
- if (strcasecmp(lp_realm(lp_ctx), principal->name.name_string.val[1]) == 0) {
- /* look for outbound trust */
- }
-
- /* Trusted domains are under CN=system */
-
/* we should lookup trusted domains */
return HDB_ERR_NOENTRY;
}
@@ -1045,13 +1022,10 @@ static krb5_error_code LDB_fetch(krb5_context context, HDB *db,
if (ret != HDB_ERR_NOENTRY) goto done;
}
if (flags & HDB_F_GET_SERVER) {
- /* krbtgt fits into this situation for trusted realms, and for resolving different versions of our own realm name */
- ret = LDB_fetch_krbtgt(context, db, mem_ctx, principal, flags, entry_ex);
- if (ret != HDB_ERR_NOENTRY) goto done;
-
- /* We return 'no entry' if it does not start with krbtgt/, so move to the common case quickly */
ret = LDB_fetch_server(context, db, mem_ctx, principal, flags, entry_ex);
if (ret != HDB_ERR_NOENTRY) goto done;
+ ret = LDB_fetch_krbtgt(context, db, mem_ctx, principal, flags, entry_ex);
+ if (ret != HDB_ERR_NOENTRY) goto done;
}
if (flags & HDB_F_GET_KRBTGT) {
ret = LDB_fetch_krbtgt(context, db, mem_ctx, principal, flags, entry_ex);
--
Samba Shared Repository
More information about the samba-cvs
mailing list