Hans Leidekker (@hans) commented about dlls/kerberos/unixlib.c:
iov[0].buffer.length = params->stream_length;
iov[0].buffer.value = params->stream;
iov[1].type = GSS_IOV_BUFFER_TYPE_DATA;
iov[1].buffer.length = 0;
iov[1].buffer.value = NULL;
ret = pgss_unwrap_iov( &minor_status, ctx, &conf_state, NULL, iov, 2 );
TRACE( "gss_unwrap_iov returned %#x minor status %#x\n", ret, minor_status );
if (GSS_ERROR( ret )) trace_gss_status( ret, minor_status );
if (ret == GSS_S_COMPLETE)
{
if (params->data_length < iov[1].buffer.length)
return SEC_E_BUFFER_TOO_SMALL;
memcpy( params->data, iov[1].buffer.value, iov[1].buffer.length );
Buffer should be freed.