rpcrt4: CContext can be NULL in NDRCContextMarshall, in which case we should marshall all-zeros.
This commit is contained in:
parent
678ad6286c
commit
972ce2f635
|
@ -4476,21 +4476,29 @@ void WINAPI NDRCContextMarshall(NDR_CCONTEXT CContext, void *pBuff)
|
||||||
|
|
||||||
TRACE("%p %p\n", CContext, pBuff);
|
TRACE("%p %p\n", CContext, pBuff);
|
||||||
|
|
||||||
EnterCriticalSection(&ndr_context_cs);
|
if (CContext)
|
||||||
che = get_context_entry(CContext);
|
{
|
||||||
memcpy(pBuff, &che->wire_data, sizeof (ndr_context_handle));
|
EnterCriticalSection(&ndr_context_cs);
|
||||||
LeaveCriticalSection(&ndr_context_cs);
|
che = get_context_entry(CContext);
|
||||||
|
memcpy(pBuff, &che->wire_data, sizeof (ndr_context_handle));
|
||||||
|
LeaveCriticalSection(&ndr_context_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ndr_context_handle *wire_data = (ndr_context_handle *)pBuff;
|
||||||
|
wire_data->attributes = 0;
|
||||||
|
wire_data->uuid = GUID_NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static UINT ndr_update_context_handle(NDR_CCONTEXT *CContext,
|
static UINT ndr_update_context_handle(NDR_CCONTEXT *CContext,
|
||||||
RPC_BINDING_HANDLE hBinding,
|
RPC_BINDING_HANDLE hBinding,
|
||||||
ndr_context_handle *chi)
|
ndr_context_handle *chi)
|
||||||
{
|
{
|
||||||
static const GUID zeroguid = {0,0,0,{0,0,0,0,0,0,0,0}};
|
|
||||||
struct context_handle_entry *che = NULL;
|
struct context_handle_entry *che = NULL;
|
||||||
|
|
||||||
/* a null UUID means we should free the context handle */
|
/* a null UUID means we should free the context handle */
|
||||||
if (IsEqualGUID(&chi->uuid, &zeroguid))
|
if (IsEqualGUID(&chi->uuid, &GUID_NULL))
|
||||||
{
|
{
|
||||||
che = get_context_entry(*CContext);
|
che = get_context_entry(*CContext);
|
||||||
if (!che)
|
if (!che)
|
||||||
|
|
Loading…
Reference in New Issue