Jacek Caban : secur32: Don' t change input buffer in InitializeSecurityContext.
Module: wine Branch: oldstable Commit: 98c513ff3811d170cf70d6b4f78dd9ed485f0c74 URL: http://source.winehq.org/git/wine.git/?a=commit;h=98c513ff3811d170cf70d6b4f7... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Fri Jan 13 19:57:48 2017 +0100 secur32: Don't change input buffer in InitializeSecurityContext. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit c1f055d8dfda4cb4349db319a9e8734022d74895) Conflicts: dlls/secur32/tests/schannel.c Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/secur32/schannel.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/dlls/secur32/schannel.c b/dlls/secur32/schannel.c index c6cc4d1..71f219c 100644 --- a/dlls/secur32/schannel.c +++ b/dlls/secur32/schannel.c @@ -732,7 +732,14 @@ schan_imp_session schan_session_for_transport(struct schan_transport* t) return t->ctx->session; } -static int schan_init_sec_ctx_get_next_buffer(const struct schan_transport *t, struct schan_buffers *s) +static int schan_init_sec_ctx_get_next_input_buffer(const struct schan_transport *t, struct schan_buffers *s) +{ + if (s->current_buffer_idx != -1) + return -1; + return schan_find_sec_buffer_idx(s->desc, 0, SECBUFFER_TOKEN); +} + +static int schan_init_sec_ctx_get_next_output_buffer(const struct schan_transport *t, struct schan_buffers *s) { if (s->current_buffer_idx == -1) { @@ -884,9 +891,9 @@ static SECURITY_STATUS SEC_ENTRY schan_InitializeSecurityContextW( ctx->req_ctx_attr = fContextReq; transport.ctx = ctx; - init_schan_buffers(&transport.in, pInput, schan_init_sec_ctx_get_next_buffer); + init_schan_buffers(&transport.in, pInput, schan_init_sec_ctx_get_next_input_buffer); transport.in.limit = expected_size; - init_schan_buffers(&transport.out, pOutput, schan_init_sec_ctx_get_next_buffer); + init_schan_buffers(&transport.out, pOutput, schan_init_sec_ctx_get_next_output_buffer); schan_imp_set_session_transport(ctx->session, &transport); /* Perform the TLS handshake */
participants (1)
-
Alexandre Julliard