diff options
author | Stefan Metzmacher <metze@samba.org> | 2004-07-06 00:15:39 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:56:51 -0500 |
commit | fff5d40ab5f23b9ca8c2c38b3f962ade4c02de2c (patch) | |
tree | 81d3481a5121baa3b15f5b027863b5be24cf1da8 /source4/libcli/auth/spnego.c | |
parent | 50ce5fd990a9ce49be006340ba797c550a0322e1 (diff) | |
download | samba-fff5d40ab5f23b9ca8c2c38b3f962ade4c02de2c.tar.gz samba-fff5d40ab5f23b9ca8c2c38b3f962ade4c02de2c.tar.bz2 samba-fff5d40ab5f23b9ca8c2c38b3f962ade4c02de2c.zip |
r1347: - remove typedef
- pass down gensec_user to the sub context
- if segfault when mechType is NULL
metze
(This used to be commit 3f84263c27add3bf01eea88618f707da925bed5c)
Diffstat (limited to 'source4/libcli/auth/spnego.c')
-rw-r--r-- | source4/libcli/auth/spnego.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/source4/libcli/auth/spnego.c b/source4/libcli/auth/spnego.c index bb9d2504ac..d8d3682fd4 100644 --- a/source4/libcli/auth/spnego.c +++ b/source4/libcli/auth/spnego.c @@ -41,7 +41,7 @@ struct spnego_state { uint_t ref_count; enum spnego_message_type expected_packet; enum spnego_message_type state_position; - negResult_t result; + enum spnego_negResult result; struct gensec_security *sub_sec_security; }; @@ -184,6 +184,11 @@ static NTSTATUS gensec_spnego_update(struct gensec_security *gensec_security, TA if (!NT_STATUS_IS_OK(nt_status)) { return nt_status; } + /* forward the user info to the sub context */ + spnego_state->sub_sec_security->user = gensec_security->user; + spnego_state->sub_sec_security->password_callback = gensec_security->password_callback; + spnego_state->sub_sec_security->password_callback_private = gensec_security->password_callback_private; + /* select the sub context */ nt_status = gensec_start_mech_by_oid(spnego_state->sub_sec_security, all_ops[i]->oid); if (!NT_STATUS_IS_OK(nt_status)) { @@ -218,11 +223,16 @@ static NTSTATUS gensec_spnego_update(struct gensec_security *gensec_security, TA int i; NTSTATUS nt_status; - for (i=0; mechType[i]; i++) { + for (i=0; mechType && mechType[i]; i++) { nt_status = gensec_client_start(&spnego_state->sub_sec_security); if (!NT_STATUS_IS_OK(nt_status)) { break; } + /* forward the user info to the sub context */ + spnego_state->sub_sec_security->user = gensec_security->user; + spnego_state->sub_sec_security->password_callback = gensec_security->password_callback; + spnego_state->sub_sec_security->password_callback_private = gensec_security->password_callback_private; + /* select the sub context */ nt_status = gensec_start_mech_by_oid(spnego_state->sub_sec_security, mechType[i]); if (!NT_STATUS_IS_OK(nt_status)) { @@ -250,7 +260,7 @@ static NTSTATUS gensec_spnego_update(struct gensec_security *gensec_security, TA break; } } - if (!mechType[i]) { + if (!mechType || !mechType[i]) { DEBUG(1, ("SPENGO: Could not find a suitable mechtype in NEG_TOKEN_INIT\n")); } @@ -308,7 +318,6 @@ static NTSTATUS gensec_spnego_update(struct gensec_security *gensec_security, TA spnego_out.negTokenTarg.negResult = SPNEGO_ACCEPT_INCOMPLETE; spnego_out.negTokenTarg.supportedMech = spnego_state->sub_sec_security->ops->oid; -; spnego_out.negTokenTarg.responseToken = unwrapped_out; spnego_out.negTokenTarg.mechListMIC = null_data_blob; |