diff options
Diffstat (limited to 'epan/dissectors/packet-dcom-sysact.c')
-rw-r--r-- | epan/dissectors/packet-dcom-sysact.c | 351 |
1 files changed, 166 insertions, 185 deletions
diff --git a/epan/dissectors/packet-dcom-sysact.c b/epan/dissectors/packet-dcom-sysact.c index ea83a44f16..7ac9c83856 100644 --- a/epan/dissectors/packet-dcom-sysact.c +++ b/epan/dissectors/packet-dcom-sysact.c @@ -197,7 +197,7 @@ typedef struct property_guids { /* Type Serialization Version 1 */ static int dissect_TypeSzCommPrivHdr(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep) + proto_tree *tree, dcerpc_info *di, guint8 *drep) { proto_item *sub_item; proto_tree *sub_tree; @@ -210,10 +210,10 @@ dissect_TypeSzCommPrivHdr(tvbuff_t *tvb, gint offset, packet_info *pinfo, sub_tree = proto_item_add_subtree(sub_item, ett_typeszcommhdr); old_offset = offset; - offset = dissect_dcom_BYTE(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_BYTE(tvb, offset, pinfo, sub_tree, di, drep, hf_typesz_ver, NULL); - offset = dissect_dcom_BYTE(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_BYTE(tvb, offset, pinfo, sub_tree, di, drep, hf_typesz_endianness, &endian); if (endian == 0x10) *drep = DREP_LITTLE_ENDIAN; @@ -221,9 +221,9 @@ dissect_TypeSzCommPrivHdr(tvbuff_t *tvb, gint offset, packet_info *pinfo, *drep &= ~DREP_LITTLE_ENDIAN; drep_tmp = DREP_LITTLE_ENDIAN; - offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, &drep_tmp, + offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, di, &drep_tmp, hf_typesz_commhdrlen, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, &drep_tmp, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, &drep_tmp, hf_typesz_filler, NULL); proto_item_set_len(sub_item, offset - old_offset); @@ -231,9 +231,9 @@ dissect_TypeSzCommPrivHdr(tvbuff_t *tvb, gint offset, packet_info *pinfo, old_offset = offset; sub_item = proto_tree_add_item(tree, hf_typeszph, tvb, offset, 0, ENC_NA); sub_tree = proto_item_add_subtree(sub_item, ett_typeszprivhdr); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_typesz_buflen, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_typesz_filler, NULL); proto_item_set_len(sub_item, offset - old_offset); @@ -244,16 +244,14 @@ dissect_TypeSzCommPrivHdr(tvbuff_t *tvb, gint offset, packet_info *pinfo, static int dissect_dcom_Property_Guid(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep) + proto_tree *tree, dcerpc_info *di, guint8 *drep) { - dcerpc_info *di; property_guids_t *pg; - di = (dcerpc_info *)pinfo->private_data; pg = (property_guids_t*)di->private_data; if (pg->id_idx < MAX_ACTPROP_LIMIT) { - offset = dissect_dcom_UUID(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_UUID(tvb, offset, pinfo, tree, di, drep, hf_sysact_actpropclsid, &pg->guid[pg->id_idx++]); } else { @@ -267,24 +265,22 @@ dissect_dcom_Property_Guid(tvbuff_t *tvb, gint offset, packet_info *pinfo, static int dissect_dcom_ActivationPropertiesCustomerHdr_PropertyGuids(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, dissect_dcom_Property_Guid); + offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, dissect_dcom_Property_Guid); return offset; } static int dissect_dcom_Property_Size(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep) + proto_tree *tree, dcerpc_info *di, guint8 *drep) { - dcerpc_info *di; property_guids_t *pg; - di = (dcerpc_info *)pinfo->private_data; pg = (property_guids_t*)di->private_data; if (pg->size_idx < MAX_ACTPROP_LIMIT) { - offset = dissect_dcom_DWORD(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, tree, di, drep, hf_sysact_actpropsize, &pg->size[pg->size_idx++]); } else { @@ -298,15 +294,15 @@ dissect_dcom_Property_Size(tvbuff_t *tvb, gint offset, packet_info *pinfo, static int dissect_dcom_ActivationPropertiesCustomerHdr_PropertySizes(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, dissect_dcom_Property_Size); + offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, dissect_dcom_Property_Size); return offset; } static int dissect_dcom_ActivationPropertiesCustomerHdr(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep) + proto_tree *tree, dcerpc_info *di, guint8 *drep) { guint32 u32TotalSize; guint32 u32CustomHdrSize; @@ -321,32 +317,32 @@ dissect_dcom_ActivationPropertiesCustomerHdr(tvbuff_t *tvb, gint offset, packet_ sub_tree = proto_item_add_subtree(sub_item, ett_commonheader); old_offset = offset; - offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, drep); + offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_totalsize, &u32TotalSize); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_customhdrsize, &u32CustomHdrSize); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_res, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_dstctx, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_actpropnumber, &u32ActPropNumber); - offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_actpropclsinfoid, NULL); /* ClsIdPtr, SizesPtr */ - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_dcom_ActivationPropertiesCustomerHdr_PropertyGuids, NDR_POINTER_UNIQUE, "ClsIdPtr",hf_sysact_actpropclsid); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_dcom_ActivationPropertiesCustomerHdr_PropertySizes, NDR_POINTER_UNIQUE, "ClsSizesPtr",hf_sysact_actpropclsid); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, NULL, NDR_POINTER_UNIQUE, "OpaqueDataPtr: Pointer To NULL", 0); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); proto_item_set_len(sub_item, offset - old_offset); return offset; @@ -355,14 +351,14 @@ dissect_dcom_ActivationPropertiesCustomerHdr(tvbuff_t *tvb, gint offset, packet_ static int dissect_dcom_ActivationProperty(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep, e_uuid_t *clsid, gint size) + proto_tree *tree, dcerpc_info *di, guint8 *drep, e_uuid_t *clsid, gint size) { dcom_dissect_fn_t routine = NULL; /* the following data depends on the clsid, get the routine by clsid */ routine = dcom_get_rountine_by_uuid(clsid); if (routine){ - offset = routine(tvb, offset, pinfo, tree, drep, size); + offset = routine(tvb, offset, pinfo, tree, di, drep, size); } return offset; @@ -372,18 +368,16 @@ dissect_dcom_ActivationProperty(tvbuff_t *tvb, gint offset, packet_info *pinfo, static int dissect_dcom_ActivationPropertiesBody(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep) + proto_tree *tree, dcerpc_info *di, guint8 *drep) { gint old_offset; proto_item *sub_item; proto_tree *sub_tree; - dcerpc_info *di; property_guids_t *pg; guint32 i; guint32 min_idx; - di = (dcerpc_info *)pinfo->private_data; pg = (property_guids_t*)di->private_data; if (pg->id_idx == pg->size_idx) { @@ -399,7 +393,7 @@ dissect_dcom_ActivationPropertiesBody(tvbuff_t *tvb, gint offset, packet_info *p old_offset = offset; for (i = 0; i < min_idx; i++) { - offset = dissect_dcom_ActivationProperty(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_ActivationProperty(tvb, offset, pinfo, sub_tree, di, drep, &pg->guid[i], pg->size[i]); } proto_item_set_len(sub_item, offset - old_offset); @@ -409,9 +403,8 @@ dissect_dcom_ActivationPropertiesBody(tvbuff_t *tvb, gint offset, packet_info *p static int dissect_dcom_ActivationProperties(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep, gint size _U_) + proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size _U_) { - dcerpc_info *di; proto_item *sub_item; proto_tree *sub_tree; property_guids_t *old_pg = NULL; @@ -422,17 +415,16 @@ dissect_dcom_ActivationProperties(tvbuff_t *tvb, gint offset, packet_info *pinfo sub_item = proto_tree_add_item(tree, hf_sysact_actproperties, tvb, offset, 0, ENC_NA); sub_tree = proto_item_add_subtree(sub_item, ett_actproperties); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_totalsize, &u32TotalSize); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_res, &u32Res); - di = (dcerpc_info *)pinfo->private_data; old_pg = (property_guids_t*)di->private_data; di->private_data = wmem_new0(wmem_packet_scope(), property_guids_t); - offset = dissect_dcom_ActivationPropertiesCustomerHdr(tvb, offset, pinfo, sub_tree, drep); - offset = dissect_dcom_ActivationPropertiesBody(tvb, offset, pinfo, sub_tree, drep); + offset = dissect_dcom_ActivationPropertiesCustomerHdr(tvb, offset, pinfo, sub_tree, di, drep); + offset = dissect_dcom_ActivationPropertiesBody(tvb, offset, pinfo, sub_tree, di, drep); di->private_data = old_pg; @@ -441,7 +433,7 @@ dissect_dcom_ActivationProperties(tvbuff_t *tvb, gint offset, packet_info *pinfo static int dissect_dcom_ContextMarshaler(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep, gint size _U_) + proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size _U_) { proto_item *sub_item; proto_tree *sub_tree; @@ -453,23 +445,23 @@ dissect_dcom_ContextMarshaler(tvbuff_t *tvb, gint offset, packet_info *pinfo, sub_item = proto_tree_add_text(tree, tvb, offset, 0, "Context"); sub_tree = proto_item_add_subtree(sub_item, ett_dcom_context); - offset = dissect_dcom_COMVERSION(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_COMVERSION(tvb, offset, pinfo, sub_tree, di, drep, NULL, NULL); - offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_ctx_id, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_ctx_flags, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_ctx_res, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_ctx_numextents, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_ctx_extentscnt, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_ctx_mashflags, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_ctx_count, &u32Count); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_ctx_frozen, NULL); if (u32Count) { @@ -484,7 +476,7 @@ dissect_dcom_ContextMarshaler(tvbuff_t *tvb, gint offset, packet_info *pinfo, static int dissect_dcom_SpecialSystemProperties(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep, gint size) + proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size) { proto_item *sub_item, *it; proto_tree *sub_tree, *tr; @@ -500,29 +492,29 @@ dissect_dcom_SpecialSystemProperties(tvbuff_t *tvb, gint offset, packet_info *pi sub_item = proto_tree_add_text(tree, tvb, offset, size, "SpecialSystemProperties"); sub_tree = proto_item_add_subtree(sub_item, ett_dcom_spclsysprop); - offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, drep); + offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_spsysprop_sid, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_spsysprop_remotethissid, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_spsysprop_cltimpersonating, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_spsysprop_partitionid, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_spsysprop_defauthlvl, NULL); - offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_spsysprop_partition, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_spsysprop_procrqstflgs, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_spsysprop_origclsctx, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_spsysprop_flags, NULL); /* * - * offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + * offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, * hf_sysact_spsysprop_procid, NULL); * offset = dissect_dcom_I8(tvb, offset, pinfo, sub_tree, drep, * hf_sysact_spsysprop_hwnd, NULL); @@ -532,7 +524,7 @@ dissect_dcom_SpecialSystemProperties(tvbuff_t *tvb, gint offset, packet_info *pi "Reserved: 8 DWORDs"); tr = proto_item_add_subtree(it, ett_dcom_reserved); for (i = 0; i < 8; i++) { - offset = dissect_dcom_DWORD(tvb, offset, pinfo, tr, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, tr, di, drep, hf_sysact_res, NULL); } @@ -552,18 +544,18 @@ dissect_dcom_SpecialSystemProperties(tvbuff_t *tvb, gint offset, packet_info *pi static int dissect_dcom_InterfaceId(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep) + proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_dcom_UUID(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_UUID(tvb, offset, pinfo, tree, di, drep, hf_sysact_instninfo_iid, NULL); return offset; } static int dissect_InstantiationInfoIids(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, + offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, dissect_dcom_InterfaceId); return offset; @@ -571,7 +563,7 @@ dissect_InstantiationInfoIids(tvbuff_t *tvb, gint offset, static int dissect_dcom_InstantiationInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep, gint size) + proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size) { proto_item *sub_item; proto_tree *sub_tree; @@ -587,31 +579,31 @@ dissect_dcom_InstantiationInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, sub_item = proto_tree_add_text(tree, tvb, offset, size, "InstantiationInfo"); sub_tree = proto_item_add_subtree(sub_item, ett_dcom_instantianinfo); - offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, drep); + offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep); - offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_instninfo_clsid, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_instninfo_clsctx, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_instninfo_actflags, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_instninfo_issurrogate, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_instninfo_iidcount, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_instninfo_instflags, NULL); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_InstantiationInfoIids, NDR_POINTER_UNIQUE, "InterfaceIdsPtr", -1); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_instninfo_entiresize, NULL); - offset = dissect_dcom_COMVERSION(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_COMVERSION(tvb, offset, pinfo, sub_tree, di, drep, NULL, NULL); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); len = offset - old_offset; if (size < len) { @@ -629,7 +621,7 @@ dissect_dcom_InstantiationInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, static int dissect_ActCtxInfo_PropCtx(tvbuff_t *tvb _U_, gint offset _U_, - packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) + packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info *di _U_, guint8 *drep _U_) { /*TBD*/ return offset; @@ -638,23 +630,20 @@ dissect_ActCtxInfo_PropCtx(tvbuff_t *tvb _U_, gint offset _U_, static int dissect_ActCtxInfo_CltCtx(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - dcerpc_info *di; - - di = (dcerpc_info *)pinfo->private_data; if (di->conformant_run) { return offset; } - offset = dissect_dcom_MInterfacePointer(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_MInterfacePointer(tvb, offset, pinfo, tree, di, drep, hf_sysact_context, NULL); return offset; } static int dissect_dcom_ActivationContextInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep, gint size) + proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size) { proto_item *sub_item; proto_tree *sub_tree; @@ -670,24 +659,24 @@ dissect_dcom_ActivationContextInfo(tvbuff_t *tvb, gint offset, packet_info *pinf sub_item = proto_tree_add_text(tree, tvb, offset, size, "ActivationContextInfo"); sub_tree = proto_item_add_subtree(sub_item, ett_dcom_actctxinfo); - offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, drep); + offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_actctxinfo_cltok, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_res, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_res, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_res, NULL); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_ActCtxInfo_CltCtx, NDR_POINTER_UNIQUE, "ClientPtr", -1); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_ActCtxInfo_PropCtx, NDR_POINTER_UNIQUE, "PrototypePtr", -1); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); len = offset - old_offset; if (size < len) { @@ -706,14 +695,12 @@ dissect_dcom_ActivationContextInfo(tvbuff_t *tvb, gint offset, packet_info *pinf static int dissect_dcom_COSERVERINFO(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep, int hfindex) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep, int hfindex) { - dcerpc_info *di; proto_item *sub_item; proto_tree *sub_tree; gint old_offset; - di = (dcerpc_info *)pinfo->private_data; if (di->conformant_run) { return offset; } @@ -722,17 +709,17 @@ dissect_dcom_COSERVERINFO(tvbuff_t *tvb, gint offset, sub_tree = proto_item_add_subtree(sub_item, ett_dcom_securityinfo); old_offset = offset; - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_si_ci_res, NULL); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE, "Name(wstring)", hf_sysact_si_ci_string); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, NULL, NDR_POINTER_UNIQUE, "AuthInfoPtr", -1); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_si_ci_res, NULL); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); proto_item_set_len(sub_item, offset - old_offset); @@ -741,16 +728,16 @@ dissect_dcom_COSERVERINFO(tvbuff_t *tvb, gint offset, static int dissect_dcom_SI_ServerInfo(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_dcom_COSERVERINFO(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_COSERVERINFO(tvb, offset, pinfo, tree, di, drep, hf_sysact_si_serverinfo); return offset; } static int dissect_dcom_SecurtiyInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep, gint size) + proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size) { proto_item *sub_item; proto_tree *sub_tree; @@ -766,16 +753,16 @@ dissect_dcom_SecurtiyInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, sub_item = proto_tree_add_text(tree, tvb, offset, size, "SecurityInfo"); sub_tree = proto_item_add_subtree(sub_item, ett_dcom_securityinfo); - offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, drep); + offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di ,drep); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_si_authflalgs, NULL); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_dcom_SI_ServerInfo, NDR_POINTER_UNIQUE, "ServerInfoPtr", -1); /*This SHOULD be NULL and MUST be ignored on receipt*/ - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, NULL, NDR_POINTER_UNIQUE, "ReservedPtr", -1); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); len = offset - old_offset; if (size < len) { @@ -793,7 +780,7 @@ dissect_dcom_SecurtiyInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, static int dissect_dcom_LocationInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep, gint size) + proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size) { proto_item *sub_item; proto_tree *sub_tree; @@ -809,20 +796,20 @@ dissect_dcom_LocationInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, sub_item = proto_tree_add_text(tree, tvb, offset, size, "LocationInfo"); sub_tree = proto_item_add_subtree(sub_item, ett_dcom_locationinfo); - offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, drep); + offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE, "MachineNamePtr", hf_sysact_li_string); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_li_procid, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_li_apartid, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_li_ctxid, NULL); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); len = offset - old_offset; if (size < len) { @@ -841,9 +828,9 @@ dissect_dcom_LocationInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, static int dissect_dcom_ProtoSeq(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep) + proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_WORD(tvb, offset, pinfo, tree, di, drep, hf_sysact_sri_protseq, NULL); return offset; @@ -851,23 +838,21 @@ dissect_dcom_ProtoSeq(tvbuff_t *tvb, gint offset, packet_info *pinfo, static int dissect_dcom_ProtoSeqArray(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, + offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, dissect_dcom_ProtoSeq); return offset; } static int dissect_dcom_customREMOTE_REQUEST_SCM_INFO(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - dcerpc_info *di; proto_item *sub_item; proto_tree *sub_tree; gint old_offset; - di = (dcerpc_info *)pinfo->private_data; if (di->conformant_run) { return offset; } @@ -876,13 +861,13 @@ dissect_dcom_customREMOTE_REQUEST_SCM_INFO(tvbuff_t *tvb, gint offset, sub_tree = proto_item_add_subtree(sub_item, ett_dcom_rmtrqst); old_offset = offset; - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_sri_cltimplvl, NULL); - offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_WORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_sri_protseqnum, NULL); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_dcom_ProtoSeqArray, NDR_POINTER_UNIQUE, "ProtocolSeqsArrayPtr", -1); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); proto_item_set_len(sub_item, offset - old_offset); @@ -891,7 +876,7 @@ dissect_dcom_customREMOTE_REQUEST_SCM_INFO(tvbuff_t *tvb, gint offset, static int dissect_dcom_ScmRqstInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep, gint size) + proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size) { proto_item *sub_item; proto_tree *sub_tree; @@ -907,15 +892,15 @@ dissect_dcom_ScmRqstInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, sub_item = proto_tree_add_text(tree, tvb, offset, size, "ScmRequestInfo"); sub_tree = proto_item_add_subtree(sub_item, ett_dcom_scmrqstinfo); - offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, drep); + offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep); /*This MUST be set to NULL and MUST be ignored on receipt*/ - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, NULL, NDR_POINTER_UNIQUE, "Ptr", -1); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_dcom_customREMOTE_REQUEST_SCM_INFO, NDR_POINTER_UNIQUE, "RemoteRequestPtr", -1); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); len = offset - old_offset; if (size < len) { @@ -934,54 +919,54 @@ dissect_dcom_ScmRqstInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, static int dissect_dcom_IfId(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep) + proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_dcom_UUID(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_UUID(tvb, offset, pinfo, tree, di, drep, hf_sysact_pi_iid, NULL); return offset; } static int dissect_dcom_IfIds(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, + offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, dissect_dcom_IfId); return offset; } static int dissect_dcom_ReturnVal(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep) + proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_dcom_DWORD(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, tree, di, drep, hf_sysact_pi_retval, NULL); return offset; } static int dissect_dcom_ReturnVals(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, + offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, dissect_dcom_ReturnVal); return offset; } static int dissect_OneInterfData(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_dcom_MInterfacePointer(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_MInterfacePointer(tvb, offset, pinfo, tree, di, drep, hf_sysact_pi_interf, NULL); return offset; } static int dissect_dcom_OneInterfDataPtr(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep) + proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, dissect_OneInterfData, NDR_POINTER_UNIQUE, "InterfacePtr", -1); return offset; } @@ -992,17 +977,17 @@ dissect_dcom_OneInterfDataPtr(tvbuff_t *tvb, gint offset, packet_info *pinfo, */ static int dissect_dcom_InterfData(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, + offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, dissect_dcom_OneInterfDataPtr); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } static int dissect_dcom_PropsOutInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep, gint size) + proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size) { proto_item *sub_item; proto_tree *sub_tree; @@ -1018,18 +1003,18 @@ dissect_dcom_PropsOutInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, sub_item = proto_tree_add_text(tree, tvb, offset, size, "PropertiesOutput"); sub_tree = proto_item_add_subtree(sub_item, ett_dcom_propsoutput); - offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, drep); + offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_pi_ifnum, NULL); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_dcom_IfIds, NDR_POINTER_UNIQUE, "InterfaceIdsPtr", -1); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_dcom_ReturnVals, NDR_POINTER_UNIQUE, "ReturnValuesPtr", -1); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_dcom_InterfData, NDR_POINTER_UNIQUE, "InterfacePtrsPtr", -1); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); len = offset - old_offset; if (size < len) { @@ -1056,14 +1041,12 @@ dissect_dcom_PropsOutInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, */ static int dissect_dcom_OxidBindings(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - dcerpc_info *di; proto_item *sub_item; proto_tree *sub_tree; gint old_offset; - di = (dcerpc_info *)pinfo->private_data; if (di->conformant_run) { return offset; } @@ -1072,8 +1055,8 @@ dissect_dcom_OxidBindings(tvbuff_t *tvb, gint offset, sub_item = proto_tree_add_text(tree, tvb, offset, 0, "OxidBindings"); sub_tree = proto_item_add_subtree(sub_item, ett_dcom_oxidbinding); - offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, sub_tree, drep, NULL); - offset = dissect_dcom_DUALSTRINGARRAY(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, sub_tree, di, drep, NULL); + offset = dissect_dcom_DUALSTRINGARRAY(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_scmri_binding, NULL); proto_item_set_len(sub_item, offset - old_offset); @@ -1083,14 +1066,12 @@ dissect_dcom_OxidBindings(tvbuff_t *tvb, gint offset, static int dissect_dcom_customREMOTE_REPLY_SCM_INFO(tvbuff_t *tvb, gint offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { - dcerpc_info *di; proto_item *sub_item; proto_tree *sub_tree; gint old_offset; - di = (dcerpc_info *)pinfo->private_data; if (di->conformant_run) { return offset; } @@ -1099,17 +1080,17 @@ dissect_dcom_customREMOTE_REPLY_SCM_INFO(tvbuff_t *tvb, gint offset, sub_tree = proto_item_add_subtree(sub_item, ett_dcom_rmtresp); old_offset = offset; - offset = dissect_dcom_ID(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_ID(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_scmri_oxid, NULL); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_dcom_OxidBindings, NDR_POINTER_UNIQUE, "OxidBindingsPtr", -1); - offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_UUID(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_scmri_rmtunknid, NULL); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep, hf_sysact_scmri_authhint, NULL); - offset = dissect_dcom_COMVERSION(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_dcom_COMVERSION(tvb, offset, pinfo, sub_tree, di, drep, NULL, NULL); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); proto_item_set_len(sub_item, offset - old_offset); @@ -1119,7 +1100,7 @@ dissect_dcom_customREMOTE_REPLY_SCM_INFO(tvbuff_t *tvb, gint offset, static int dissect_dcom_ScmReplyInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, - proto_tree *tree, guint8 *drep, gint size) + proto_tree *tree, dcerpc_info *di, guint8 *drep, gint size) { proto_item *sub_item; proto_tree *sub_tree; @@ -1135,15 +1116,15 @@ dissect_dcom_ScmReplyInfo(tvbuff_t *tvb, gint offset, packet_info *pinfo, sub_item = proto_tree_add_text(tree, tvb, offset, size, "ScmReplyInfo"); sub_tree = proto_item_add_subtree(sub_item, ett_dcom_scmrespinfo); - offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, drep); + offset = dissect_TypeSzCommPrivHdr(tvb, offset, pinfo, sub_tree, di, drep); /*This MUST be set to NULL and MUST be ignored on receipt*/ - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, NULL, NDR_POINTER_UNIQUE, "Ptr", -1); - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, drep, + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, sub_tree, di, drep, dissect_dcom_customREMOTE_REPLY_SCM_INFO, NDR_POINTER_UNIQUE, "RemoteRequestPtr", -1); - offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); len = offset - old_offset; if (size < len) { @@ -1180,32 +1161,32 @@ sysact_register_routines(void) static int dissect_remsysact_remotecreateinstance_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { sysact_register_routines(); - offset = dissect_dcom_this(tvb, offset, pinfo, tree, drep); + offset = dissect_dcom_this(tvb, offset, pinfo, tree, di, drep); /* XXX - what is this? */ offset = dissect_dcom_nospec_data(tvb, offset, pinfo, tree, drep, 4); - offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, di, drep, hf_sysact_actproperties, NULL /* XXX */); return offset; } static int dissect_remsysact_remotecreateinstance_resp(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, guint8 *drep) + packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep) { sysact_register_routines(); - offset = dissect_dcom_that(tvb, offset, pinfo, tree, drep); + offset = dissect_dcom_that(tvb, offset, pinfo, tree, di, drep); - offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_PMInterfacePointer(tvb, offset, pinfo, tree, di, drep, hf_sysact_actproperties, NULL /* XXX */); - offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, drep, + offset = dissect_dcom_HRESULT(tvb, offset, pinfo, tree, di, drep, NULL /* pu32HResult */); return offset; |