Module: wine Branch: master Commit: 506af9205d62af2bd58e40c8b5f956e041a0ba8f URL: http://source.winehq.org/git/wine.git/?a=commit;h=506af9205d62af2bd58e40c8b5...
Author: Mikko Rasa tdb@tdb.fi Date: Wed Sep 15 20:30:10 2010 +0300
secur32: Fill a SECBUFFER_MISSING buffer if the message is not complete.
---
dlls/secur32/schannel.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/dlls/secur32/schannel.c b/dlls/secur32/schannel.c index 78757ac..199c7ce 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; }