[PATCH v2 04/12] secur32: Simplify input buffer handling for schan_recv() call.
Nikolay Sivov
wine at gitlab.winehq.org
Thu Jun 2 06:45:44 CDT 2022
From: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
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)
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/160
More information about the wine-devel
mailing list