[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