Re: [PATCH] Fill a SECBUFFER_MISSING buffer if the message is not complete
Hi Mikko,
diff --git a/dlls/secur32/schannel.c b/dlls/secur32/schannel.c index 78757ac..192f9cb 100644 --- a/dlls/secur32/schannel.c +++ b/dlls/secur32/schannel.c @@ -1244,6 +1244,15 @@ static SECURITY_STATUS SEC_ENTRY schan_DecryptMessage(PCtxtHandle context_handle if(buffer->cbBuffer < expected_size) { TRACE("Expected %u bytes, but buffer only contains %u bytes\n", expected_size, buffer->cbBuffer); + buffer->BufferType = SECBUFFER_MISSING; + buffer->cbBuffer = expected_size - buffer->cbBuffer; + + // This is a bit weird, but windows does it too + idx = schan_find_sec_buffer_idx(message, 0, SECBUFFER_EMPTY); + buffer = &message->pBuffers[idx]; + buffer->BufferType = SECBUFFER_MISSING; + buffer->cbBuffer = expected_size - buffer->cbBuffer; + TRACE("Returning SEC_E_INCOMPLETE_MESSAGE\n"); return SEC_E_INCOMPLETE_MESSAGE; }
You should resend this with the patches it depends on and give the patches a sequence number.
On 07.09.2010 22:37, Hans Leidekker wrote:
Hi Mikko,
diff --git a/dlls/secur32/schannel.c b/dlls/secur32/schannel.c index 78757ac..192f9cb 100644 --- a/dlls/secur32/schannel.c +++ b/dlls/secur32/schannel.c @@ -1244,6 +1244,15 @@ static SECURITY_STATUS SEC_ENTRY schan_DecryptMessage(PCtxtHandle context_handle if(buffer->cbBuffer< expected_size) { TRACE("Expected %u bytes, but buffer only contains %u bytes\n", expected_size, buffer->cbBuffer); + buffer->BufferType = SECBUFFER_MISSING; + buffer->cbBuffer = expected_size - buffer->cbBuffer; + + // This is a bit weird, but windows does it too + idx = schan_find_sec_buffer_idx(message, 0, SECBUFFER_EMPTY); + buffer =&message->pBuffers[idx]; + buffer->BufferType = SECBUFFER_MISSING; + buffer->cbBuffer = expected_size - buffer->cbBuffer; + TRACE("Returning SEC_E_INCOMPLETE_MESSAGE\n"); return SEC_E_INCOMPLETE_MESSAGE; }
You should resend this with the patches it depends on and give the patches a sequence number.
Will do. Can you please mark all of my previous secur32 patches as superseded? -- Mikko
participants (2)
-
Hans Leidekker -
Mikko Rasa