Hans Leidekker (@hans) commented about dlls/kerberos/krb5_ap.c:
params.context = context_handle->handle; + + if (stream_idx == -1) + { + params.stream_length = 0; + params.stream = NULL; + params.token_length = message->pBuffers[token_idx].cbBuffer; + params.token = message->pBuffers[token_idx].pvBuffer; + } + else + { + if (!message->pBuffers[data_idx].pvBuffer) + { + message->pBuffers[data_idx].pvBuffer = RtlAllocateHeap( GetProcessHeap(), 0, KERBEROS_MAX_BUF ); + if (!message->pBuffers[data_idx].pvBuffer) return STATUS_NO_MEMORY; + message->pBuffers[data_idx].cbBuffer = KERBEROS_MAX_BUF;
KERBEROS_MAX_BUF is a misleading name, it's actually the maximum token size. I think we can use stream buffer size here instead. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8116#note_104545