secur32: Update output buffer offset on return from schan_send() call.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
Nikolay Sivov 2022-05-31 09:20:07 +03:00 committed by Alexandre Julliard
parent 1c894ec973
commit 0a62c7bd40
3 changed files with 11 additions and 2 deletions

View file

@ -1299,7 +1299,8 @@ static SECURITY_STATUS SEC_ENTRY schan_EncryptMessage(PCtxtHandle context_handle
SIZE_T data_size;
SIZE_T length;
char *data;
int idx;
int idx, output_buffer_idx = -1;
ULONG output_offset = 0;
TRACE("context_handle %p, quality %ld, message %p, message_seq_no %ld\n",
context_handle, quality, message, message_seq_no);
@ -1326,8 +1327,13 @@ static SECURITY_STATUS SEC_ENTRY schan_EncryptMessage(PCtxtHandle context_handle
params.output = message;
params.buffer = data;
params.length = &length;
params.output_buffer_idx = &output_buffer_idx;
params.output_offset = &output_offset;
status = GNUTLS_CALL( send, &params );
if (!status && output_buffer_idx != -1)
message->pBuffers[output_buffer_idx].cbBuffer = output_offset;
TRACE("Sent %Id bytes.\n", length);
if (length != data_size)

View file

@ -878,7 +878,8 @@ static NTSTATUS schan_send( void *args )
}
}
t->out.desc->pBuffers[t->out.current_buffer_idx].cbBuffer = t->out.offset;
*params->output_buffer_idx = t->out.current_buffer_idx;
*params->output_offset = t->out.offset;
return SEC_E_OK;
}

View file

@ -167,6 +167,8 @@ struct send_params
SecBufferDesc *output;
const void *buffer;
SIZE_T *length;
int *output_buffer_idx;
ULONG *output_offset;
};
struct set_application_protocols_params