From 1c894ec973dcc5ff2cee32d239e171f61a48e3ef Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Tue, 31 May 2022 09:12:05 +0300 Subject: [PATCH] secur32: Simplify input buffer handling for schan_recv() call. Signed-off-by: Nikolay Sivov --- dlls/secur32/schannel.c | 6 +++++- dlls/secur32/schannel_gnutls.c | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/secur32/schannel.c b/dlls/secur32/schannel.c index 6a8d667a32f..1f4a1005550 100644 --- a/dlls/secur32/schannel.c +++ b/dlls/secur32/schannel.c @@ -1409,6 +1409,7 @@ static SECURITY_STATUS SEC_ENTRY schan_DecryptMessage(PCtxtHandle context_handle SIZE_T received = 0; int idx; unsigned char *buf_ptr; + SecBufferDesc input_desc = { 0 }; TRACE("context_handle %p, message %p, message_seq_no %ld, quality %p\n", context_handle, message, message_seq_no, quality); @@ -1446,8 +1447,11 @@ static SECURITY_STATUS SEC_ENTRY schan_DecryptMessage(PCtxtHandle context_handle received = data_size; + input_desc.cBuffers = 1; + input_desc.pBuffers = &message->pBuffers[idx]; + params.session = ctx->session; - params.input = message; + params.input = &input_desc; params.input_size = expected_size; params.buffer = data; params.length = &received; diff --git a/dlls/secur32/schannel_gnutls.c b/dlls/secur32/schannel_gnutls.c index 696790f44dc..82437207982 100644 --- a/dlls/secur32/schannel_gnutls.c +++ b/dlls/secur32/schannel_gnutls.c @@ -307,7 +307,7 @@ static int recv_message_get_next_buffer(struct schan_buffers *s) { if (s->current_buffer_idx != -1) return -1; - return schan_find_sec_buffer_idx(s->desc, 0, SECBUFFER_DATA); + return s->desc->cBuffers ? 0 : -1; } static char *get_buffer(struct schan_buffers *s, SIZE_T *count)