Schannel: handle SEC_E_INCOMPLETE_DATA in acceptContext

It's not a failure state, we just need more data. It is handled properly
in other functions.

Change-Id: I9450a78c71a3f4fe9506a7a79de6efa2db08697c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
bb10
Mårten Nordheim 2019-09-06 13:01:43 +02:00
parent 97b9af1519
commit e5e8f1d67c
1 changed files with 6 additions and 1 deletions

View File

@ -828,12 +828,17 @@ bool QSslSocketBackendPrivate::acceptContext()
&expiry // ptsTimeStamp
);
if (status == SEC_E_INCOMPLETE_MESSAGE) {
// Need more data
return true;
}
if (inBuffers[1].BufferType == SECBUFFER_EXTRA) {
// https://docs.microsoft.com/en-us/windows/desktop/secauthn/extra-buffers-returned-by-schannel
// inBuffers[1].cbBuffer indicates the amount of bytes _NOT_ processed, the rest need to
// be stored.
intermediateBuffer = intermediateBuffer.right(int(inBuffers[1].cbBuffer));
} else if (status != SEC_E_INCOMPLETE_MESSAGE) {
} else { /* No 'extra' data, message not incomplete */
intermediateBuffer.clear();
}