DCERPC requests may carry an Object GUID, who's presence is signaled by
the PFC_OBJECT_UUID flag in the PfcFlags field. Current unmarshalling
code requires that the PFC_OBJECT_UUID flag is carried in the ndr flags
as LIBNDR_FLAG_OBJECT_PRESENT.
} dcerpc_empty;
typedef [nodiscriminant] union {
- [default] dcerpc_empty empty;
[case(LIBNDR_FLAG_OBJECT_PRESENT)] GUID object;
+ [default] dcerpc_empty empty;
} dcerpc_object;
typedef struct {
ndr->flags |= LIBNDR_FLAG_BIGENDIAN;
}
+ if (CVAL(ndr->data, DCERPC_PFC_OFFSET) & DCERPC_PFC_FLAG_OBJECT_UUID) {
+ ndr->flags |= LIBNDR_FLAG_OBJECT_PRESENT;
+ }
+
ndr_err = ndr_pull_ncacn_packet(ndr, NDR_SCALARS|NDR_BUFFERS, r);
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {