1 /* packet-dcom-sysact.c
2 * Routines for the ISystemActivator interface
3 * Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
4 * Copyright 2012, Litao Gao <ltgao@juniper.net>
6 * Wireshark - Network traffic analyzer
7 * By Gerald Combs <gerald@wireshark.org>
8 * Copyright 1998 Gerald Combs
10 * SPDX-License-Identifier: GPL-2.0-or-later
15 #include <epan/packet.h>
16 #include "packet-dcerpc.h"
17 #include "packet-dcom.h"
19 void proto_register_ISystemActivator(void);
20 void proto_reg_handoff_ISystemActivator(void);
22 static int proto_ISystemActivator
;
24 static int ett_isystemactivator
;
26 static int hf_sysact_actproperties
;
27 /* static int hf_sysact_unknown; */
29 static int ett_actproperties
;
30 static int hf_sysact_totalsize
;
31 static int hf_sysact_res
;
33 static int ett_commonheader
;
34 static int ett_propguids
;
35 static int ett_properties
;
36 static int hf_sysact_customhdrsize
;
37 static int hf_sysact_dstctx
;
38 static int hf_sysact_actpropnumber
;
39 static int hf_sysact_actpropclsinfoid
;
40 /* static int hf_sysact_actpropclsids; */
41 static int hf_sysact_actpropclsid
;
42 /* static int hf_sysact_actpropsizes; */
43 static int hf_sysact_actpropsize
;
46 static int ett_dcom_spclsysprop
;
47 static int ett_dcom_reserved
;
48 static int hf_sysact_spsysprop_sid
;
49 static int hf_sysact_spsysprop_remotethissid
;
50 static int hf_sysact_spsysprop_cltimpersonating
;
51 static int hf_sysact_spsysprop_partitionid
;
52 static int hf_sysact_spsysprop_defauthlvl
;
53 static int hf_sysact_spsysprop_partition
;
54 static int hf_sysact_spsysprop_procrqstflgs
;
55 static int hf_sysact_spsysprop_origclsctx
;
56 static int hf_sysact_spsysprop_flags
;
57 /* static int hf_sysact_spsysprop_procid; */
58 /* static int hf_sysact_spsysprop_hwnd; */
60 static int ett_dcom_instantianinfo
;
61 static int hf_sysact_instninfo_clsid
;
62 static int hf_sysact_instninfo_clsctx
;
63 static int hf_sysact_instninfo_actflags
;
64 static int hf_sysact_instninfo_issurrogate
;
65 static int hf_sysact_instninfo_iidcount
;
66 static int hf_sysact_instninfo_instflags
;
67 static int hf_sysact_instninfo_entiresize
;
68 static int hf_sysact_instninfo_iid
;
70 static int ett_dcom_actctxinfo
;
71 static int hf_sysact_actctxinfo_cltok
;
72 static int hf_sysact_context
;
74 static int ett_dcom_instanceinfo
;
75 static int hf_sysact_instinfo_mode
;
76 static int hf_sysact_instinfo_stg
;
78 static int ett_dcom_istorage
;
79 static int hf_sysact_istg
;
81 static int ett_dcom_context
;
82 static int hf_sysact_ctx_id
;
83 static int hf_sysact_ctx_flags
;
84 static int hf_sysact_ctx_res
;
85 static int hf_sysact_ctx_numextents
;
86 static int hf_sysact_ctx_extentscnt
;
87 static int hf_sysact_ctx_mashflags
;
88 static int hf_sysact_ctx_count
;
89 static int hf_sysact_ctx_frozen
;
91 static int ett_dcom_securityinfo
;
92 static int hf_sysact_si_authflalgs
;
93 static int hf_sysact_si_ci_res
;
94 static int hf_sysact_si_ci_string
;
95 static int hf_sysact_si_serverinfo
;
97 static int ett_dcom_locationinfo
;
98 static int hf_sysact_li_string
;
99 static int hf_sysact_li_procid
;
100 static int hf_sysact_li_apartid
;
101 static int hf_sysact_li_ctxid
;
103 static int ett_dcom_scmrqstinfo
;
104 static int ett_dcom_rmtrqst
;
106 static int hf_sysact_sri_cltimplvl
;
107 static int hf_sysact_sri_protseqnum
;
108 static int hf_sysact_sri_protseq
;
110 static int ett_dcom_propsoutput
;
111 static int hf_sysact_pi_ifnum
;
112 static int hf_sysact_pi_retval
;
113 static int hf_sysact_pi_interf
;
114 static int hf_sysact_pi_iid
;
116 static int ett_dcom_scmrespinfo
;
117 static int ett_dcom_rmtresp
;
118 static int ett_dcom_oxidbinding
;
119 static int hf_sysact_scmri_rmtunknid
;
120 static int hf_sysact_scmri_authhint
;
121 static int hf_sysact_scmri_binding
;
122 static int hf_sysact_scmri_oxid
;
123 static int hf_sysact_unused_buffer
;
125 static int ett_typeszcommhdr
;
126 static int ett_typeszprivhdr
;
127 static int hf_typeszch
;
128 static int hf_typeszph
;
129 static int hf_typesz_ver
;
130 static int hf_typesz_endianness
;
131 static int hf_typesz_commhdrlen
;
132 static int hf_typesz_filler
;
133 static int hf_typesz_buflen
;
135 static e_guid_t uuid_ISystemActivator
= { 0x000001a0, 0x0000, 0x0000, { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } };
136 static uint16_t ver_ISystemActivator
;
138 /*static e_guid_t clsid_ActivationPropertiesIn = { 0x00000338, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };*/
139 /*static e_guid_t clsid_ActivationPropertiesOut = { 0x00000339, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };*/
140 static e_guid_t iid_ActivationPropertiesIn
= { 0x000001a2, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
141 static e_guid_t iid_ActivationPropertiesOut
= { 0x000001a3, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
143 static e_guid_t clsid_SpecialSystemProperties
= { 0x000001b9, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
144 static e_guid_t clsid_InstantiationInfo
= { 0x000001ab, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
145 static e_guid_t clsid_ActivationContextInfo
= { 0x000001a5, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
146 //static e_guid_t clsid_ContextMarshaler = { 0x0000033b, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
147 static e_guid_t iid_IContext
= { 0x000001c0, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
148 static e_guid_t clsid_SecurityInfo
= { 0x000001a6, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
149 static e_guid_t clsid_ServerLocationInfo
= { 0x000001a4, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
150 static e_guid_t clsid_ScmRequestInfo
= { 0x000001aa, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
151 static e_guid_t clsid_PropsOutInfo
= { 0x00000339, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
152 static e_guid_t clsid_ScmReplyInfo
= { 0x000001b6, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
153 static e_guid_t clsid_InstanceInfo
= { 0x000001ad, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
154 static e_guid_t iid_IStorage
= { 0x0000000B, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
157 static const value_string instninfo_actflags
[] = {
158 { 0x00000002, "ACTVFLAGS_DISABLE_AAA" },
159 { 0x00000004, "ACTVFLAGS_ACTIVATE_32_BIT_SERVER" },
160 { 0x00000008, "ACTVFLAGS_ACTIVATE_64_BIT_SERVER" },
161 { 0x00000020, "ACTVFLAGS_NO_FAILURE_LOG" },
165 static const value_string boolean_flag_vals
[] = {
166 { 0x00000001, "TRUE" },
167 { 0x00000000, "FALSE" },
171 static const value_string dcom_context_flag_vals
[] = {
172 { 0x00000002, "MarshalByValue" },
176 static const value_string ts_endian_vals
[] = {
177 { 0x10, "Little-endian" },
178 { 0x00, "Big-endian" },
182 /* MS-DCOM 2.2.28.1 */
183 #define MIN_ACTPROP_LIMIT 1
184 #define MAX_ACTPROP_LIMIT 10
186 typedef struct property_guids
{
187 e_guid_t guid
[MAX_ACTPROP_LIMIT
];
188 uint32_t size
[MAX_ACTPROP_LIMIT
];
193 /* Type Serialization Version 1 */
195 dissect_TypeSzCommPrivHdr(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
196 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
198 proto_item
*sub_item
;
199 proto_tree
*sub_tree
;
201 uint8_t endian
= 0x10;
204 /* Common Header use little endian */
205 sub_item
= proto_tree_add_item(tree
, hf_typeszch
, tvb
, offset
, 0, ENC_NA
);
206 sub_tree
= proto_item_add_subtree(sub_item
, ett_typeszcommhdr
);
209 offset
= dissect_dcom_BYTE(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
210 hf_typesz_ver
, NULL
);
212 offset
= dissect_dcom_BYTE(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
213 hf_typesz_endianness
, &endian
);
215 *drep
= DREP_LITTLE_ENDIAN
;
217 *drep
&= ~DREP_LITTLE_ENDIAN
;
219 drep_tmp
= DREP_LITTLE_ENDIAN
;
220 offset
= dissect_dcom_WORD(tvb
, offset
, pinfo
, sub_tree
, di
, &drep_tmp
,
221 hf_typesz_commhdrlen
, NULL
);
222 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, &drep_tmp
,
223 hf_typesz_filler
, NULL
);
224 proto_item_set_len(sub_item
, offset
- old_offset
);
228 sub_item
= proto_tree_add_item(tree
, hf_typeszph
, tvb
, offset
, 0, ENC_NA
);
229 sub_tree
= proto_item_add_subtree(sub_item
, ett_typeszprivhdr
);
230 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
231 hf_typesz_buflen
, NULL
);
232 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
233 hf_typesz_filler
, NULL
);
234 proto_item_set_len(sub_item
, offset
- old_offset
);
242 dissect_dcom_Property_Guid(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
243 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
245 property_guids_t
*pg
;
247 pg
= (property_guids_t
*)di
->private_data
;
249 if (pg
->id_idx
< MAX_ACTPROP_LIMIT
) {
250 offset
= dissect_dcom_UUID(tvb
, offset
, pinfo
, tree
, di
, drep
,
251 hf_sysact_actpropclsid
, &pg
->guid
[pg
->id_idx
++]);
254 /* TODO: expert info */
255 tvb_ensure_bytes_exist(tvb
, offset
, 16);
263 dissect_dcom_ActivationPropertiesCustomerHdr_PropertyGuids(tvbuff_t
*tvb
, int offset
,
264 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
266 offset
= dissect_ndr_ucarray(tvb
, offset
, pinfo
, tree
, di
, drep
, dissect_dcom_Property_Guid
);
271 dissect_dcom_Property_Size(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
272 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
274 property_guids_t
*pg
;
276 pg
= (property_guids_t
*)di
->private_data
;
278 if (pg
->size_idx
< MAX_ACTPROP_LIMIT
) {
279 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, tree
, di
, drep
,
280 hf_sysact_actpropsize
, &pg
->size
[pg
->size_idx
++]);
283 /* TODO: expert info */
284 tvb_ensure_bytes_exist(tvb
, offset
, 4);
292 dissect_dcom_ActivationPropertiesCustomerHdr_PropertySizes(tvbuff_t
*tvb
, int offset
,
293 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
295 offset
= dissect_ndr_ucarray(tvb
, offset
, pinfo
, tree
, di
, drep
, dissect_dcom_Property_Size
);
300 dissect_dcom_ActivationPropertiesCustomerHdr(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
301 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
303 uint32_t u32TotalSize
;
304 uint32_t u32CustomHdrSize
;
305 uint32_t u32ActPropNumber
;
308 proto_item
*sub_item
;
309 proto_tree
*sub_tree
;
311 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, 0, ett_commonheader
, &sub_item
, "CustomHeader");
314 offset
= dissect_TypeSzCommPrivHdr(tvb
, offset
, pinfo
, sub_tree
, di
, drep
);
316 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
317 hf_sysact_totalsize
, &u32TotalSize
);
318 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
319 hf_sysact_customhdrsize
, &u32CustomHdrSize
);
320 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
321 hf_sysact_res
, NULL
);
322 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
323 hf_sysact_dstctx
, NULL
);
324 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
325 hf_sysact_actpropnumber
, &u32ActPropNumber
);
326 offset
= dissect_dcom_UUID(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
327 hf_sysact_actpropclsinfoid
, NULL
);
329 /* ClsIdPtr, SizesPtr */
330 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
331 dissect_dcom_ActivationPropertiesCustomerHdr_PropertyGuids
, NDR_POINTER_UNIQUE
,
332 "ClsIdPtr",hf_sysact_actpropclsid
);
333 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
334 dissect_dcom_ActivationPropertiesCustomerHdr_PropertySizes
, NDR_POINTER_UNIQUE
,
335 "ClsSizesPtr",hf_sysact_actpropclsid
);
336 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
337 NULL
, NDR_POINTER_UNIQUE
, "OpaqueDataPtr: Pointer To NULL", 0);
339 dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
340 proto_item_set_len(sub_item
, u32CustomHdrSize
);
342 return old_offset
+ u32CustomHdrSize
;
347 dissect_dcom_ActivationProperty(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
348 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, e_guid_t
*clsid
, int size
)
350 dcom_dissect_fn_t routine
= NULL
;
352 /* the following data depends on the clsid, get the routine by clsid */
353 routine
= dcom_get_routine_by_uuid(clsid
);
355 routine(tvb
, offset
, pinfo
, tree
, di
, drep
, size
);
364 dissect_dcom_ActivationPropertiesBody(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
365 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
369 proto_item
*sub_item
;
370 proto_tree
*sub_tree
;
371 property_guids_t
*pg
;
375 pg
= (property_guids_t
*)di
->private_data
;
377 if (pg
->id_idx
== pg
->size_idx
) {
378 min_idx
= pg
->id_idx
;
381 /* TODO: expert info */
382 min_idx
= MIN(pg
->id_idx
, pg
->size_idx
);
385 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, 0, ett_properties
, &sub_item
, "Properties");
388 for (i
= 0; i
< min_idx
; i
++) {
389 offset
= dissect_dcom_ActivationProperty(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
390 &pg
->guid
[i
], pg
->size
[i
]);
392 proto_item_set_len(sub_item
, offset
- old_offset
);
398 dissect_dcom_ActivationProperties(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
399 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size _U_
)
401 proto_item
*sub_item
;
402 proto_tree
*sub_tree
;
403 property_guids_t
*old_pg
= NULL
;
405 uint32_t u32TotalSize
;
408 sub_item
= proto_tree_add_item(tree
, hf_sysact_actproperties
, tvb
, offset
, 0, ENC_NA
);
409 sub_tree
= proto_item_add_subtree(sub_item
, ett_actproperties
);
411 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
412 hf_sysact_totalsize
, &u32TotalSize
);
413 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
414 hf_sysact_res
, &u32Res
);
416 old_pg
= (property_guids_t
*)di
->private_data
;
417 di
->private_data
= wmem_new0(pinfo
->pool
, property_guids_t
);
419 offset
= dissect_dcom_ActivationPropertiesCustomerHdr(tvb
, offset
, pinfo
, sub_tree
, di
, drep
);
420 offset
= dissect_dcom_ActivationPropertiesBody(tvb
, offset
, pinfo
, sub_tree
, di
, drep
);
422 di
->private_data
= old_pg
;
430 dissect_dcom_IStorage(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
431 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size _U_
)
433 proto_item
*sub_item
;
434 proto_tree
*sub_tree
;
438 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, 0, ett_dcom_istorage
, &sub_item
, "IStorage");
440 offset
= dissect_dcom_OBJREF(tvb
, offset
, pinfo
, sub_tree
, di
, drep
, hf_sysact_istg
, NULL
);
442 proto_item_set_len(sub_item
, offset
- old_offset
);
448 dissect_dcom_IContext(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
449 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size _U_
)
451 proto_item
*sub_item
;
452 proto_tree
*sub_tree
;
458 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, 0, ett_dcom_context
, &sub_item
, "Context");
460 offset
= dissect_dcom_COMVERSION(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
462 offset
= dissect_dcom_UUID(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
463 hf_sysact_ctx_id
, NULL
);
464 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
465 hf_sysact_ctx_flags
, NULL
);
466 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
467 hf_sysact_ctx_res
, NULL
);
468 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
469 hf_sysact_ctx_numextents
, NULL
);
470 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
471 hf_sysact_ctx_extentscnt
, NULL
);
472 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
473 hf_sysact_ctx_mashflags
, NULL
);
474 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
475 hf_sysact_ctx_count
, &u32Count
);
476 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
477 hf_sysact_ctx_frozen
, NULL
);
480 /*PropMarshalHeader array*/
484 proto_item_set_len(sub_item
, offset
- old_offset
);
490 dissect_dcom_SpecialSystemProperties(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
491 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size
)
493 proto_tree
*sub_tree
, *tr
;
494 int old_offset
, len
, i
;
499 /* TODO: expert info */
503 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, size
, ett_dcom_spclsysprop
, NULL
, "SpecialSystemProperties");
505 offset
= dissect_TypeSzCommPrivHdr(tvb
, offset
, pinfo
, sub_tree
, di
, drep
);
507 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
508 hf_sysact_spsysprop_sid
, NULL
);
509 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
510 hf_sysact_spsysprop_remotethissid
, NULL
);
511 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
512 hf_sysact_spsysprop_cltimpersonating
, NULL
);
513 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
514 hf_sysact_spsysprop_partitionid
, NULL
);
515 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
516 hf_sysact_spsysprop_defauthlvl
, NULL
);
517 offset
= dissect_dcom_UUID(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
518 hf_sysact_spsysprop_partition
, NULL
);
519 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
520 hf_sysact_spsysprop_procrqstflgs
, NULL
);
521 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
522 hf_sysact_spsysprop_origclsctx
, NULL
);
523 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
524 hf_sysact_spsysprop_flags
, NULL
);
527 * offset = dissect_dcom_DWORD(tvb, offset, pinfo, sub_tree, di, drep,
528 * hf_sysact_spsysprop_procid, NULL);
529 * offset = dissect_dcom_I8(tvb, offset, pinfo, sub_tree, drep,
530 * hf_sysact_spsysprop_hwnd, NULL);
533 tr
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, sizeof(uint32_t)*8,
534 ett_dcom_reserved
, NULL
, "Reserved: 8 DWORDs");
535 for (i
= 0; i
< 8; i
++) {
536 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, tr
, di
, drep
,
537 hf_sysact_res
, NULL
);
540 len
= offset
- old_offset
;
542 /* TODO expert info */
545 else if (size
> len
) {
546 proto_tree_add_item(sub_tree
, hf_sysact_unused_buffer
, tvb
, offset
, size
- len
, ENC_NA
);
549 offset
= old_offset
+ size
;
554 dissect_dcom_InterfaceId(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
555 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
557 offset
= dissect_dcom_UUID(tvb
, offset
, pinfo
, tree
, di
, drep
,
558 hf_sysact_instninfo_iid
, NULL
);
563 dissect_InstantiationInfoIids(tvbuff_t
*tvb
, int offset
,
564 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
566 offset
= dissect_ndr_ucarray(tvb
, offset
, pinfo
, tree
, di
, drep
,
567 dissect_dcom_InterfaceId
);
573 dissect_dcom_InstantiationInfo(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
574 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size
)
576 proto_tree
*sub_tree
;
582 /* TODO: expert info */
586 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, size
, ett_dcom_instantianinfo
, NULL
, "InstantiationInfo");
588 offset
= dissect_TypeSzCommPrivHdr(tvb
, offset
, pinfo
, sub_tree
, di
, drep
);
590 offset
= dissect_dcom_UUID(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
591 hf_sysact_instninfo_clsid
, NULL
);
592 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
593 hf_sysact_instninfo_clsctx
, NULL
);
594 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
595 hf_sysact_instninfo_actflags
, NULL
);
596 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
597 hf_sysact_instninfo_issurrogate
, NULL
);
598 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
599 hf_sysact_instninfo_iidcount
, NULL
);
600 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
601 hf_sysact_instninfo_instflags
, NULL
);
603 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
604 dissect_InstantiationInfoIids
, NDR_POINTER_UNIQUE
,
605 "InterfaceIdsPtr", -1);
607 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
608 hf_sysact_instninfo_entiresize
, NULL
);
609 offset
= dissect_dcom_COMVERSION(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
612 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
614 len
= offset
- old_offset
;
616 /* TODO expert info */
619 else if (size
> len
) {
620 proto_tree_add_item(sub_tree
, hf_sysact_unused_buffer
, tvb
, offset
, size
- len
, ENC_NA
);
623 offset
= old_offset
+ size
;
628 dissect_ActCtxInfo_PropCtx(tvbuff_t
*tvb _U_
, int offset
,
629 packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
*di _U_
, uint8_t *drep _U_
)
637 dissect_ActCtxInfo_CltCtx(tvbuff_t
*tvb
, int offset
,
638 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
640 if (di
->conformant_run
) {
644 offset
= dissect_dcom_MInterfacePointer(tvb
, offset
, pinfo
, tree
, di
, drep
,
645 hf_sysact_context
, NULL
);
650 dissect_dcom_ActivationContextInfo(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
651 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size
)
653 proto_tree
*sub_tree
;
659 /* TODO: expert info */
663 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, size
, ett_dcom_actctxinfo
, NULL
, "ActivationContextInfo");
665 offset
= dissect_TypeSzCommPrivHdr(tvb
, offset
, pinfo
, sub_tree
, di
, drep
);
667 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
668 hf_sysact_actctxinfo_cltok
, NULL
);
669 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
670 hf_sysact_res
, NULL
);
671 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
672 hf_sysact_res
, NULL
);
673 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
674 hf_sysact_res
, NULL
);
676 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
677 dissect_ActCtxInfo_CltCtx
, NDR_POINTER_UNIQUE
,
679 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
680 dissect_ActCtxInfo_PropCtx
, NDR_POINTER_UNIQUE
,
682 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
684 len
= offset
- old_offset
;
686 /* TODO expert info */
689 else if (size
> len
) {
690 proto_tree_add_item(sub_tree
, hf_sysact_unused_buffer
, tvb
, offset
, size
- len
, ENC_NA
);
693 offset
= old_offset
+ size
;
699 dissect_InstInfo_IfdROT(tvbuff_t
*tvb _U_
, int offset
,
700 packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
*di _U_
, uint8_t *drep _U_
)
708 dissect_InstInfo_IfdStg(tvbuff_t
*tvb
, int offset
,
709 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
711 if (di
->conformant_run
) {
715 offset
= dissect_dcom_MInterfacePointer(tvb
, offset
, pinfo
, tree
, di
, drep
,
716 hf_sysact_instinfo_stg
, NULL
);
722 dissect_dcom_InstanceInfo(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
723 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size
)
725 proto_tree
*sub_tree
;
731 /* TODO: expert info */
735 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, size
, ett_dcom_instanceinfo
, NULL
, "InstanceInfo");
737 offset
= dissect_TypeSzCommPrivHdr(tvb
, offset
, pinfo
, sub_tree
, di
, drep
);
740 typedef struct tagInstanceInfoData {
741 [string] wchar_t* fileName;
743 MInterfacePointer* ifdROT;
744 MInterfacePointer* ifdStg;
748 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
749 dissect_ndr_wchar_cvstring
, NDR_POINTER_UNIQUE
, "FileNamePtr",
750 hf_sysact_li_string
);
752 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
753 hf_sysact_instinfo_mode
, NULL
);
755 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
756 dissect_InstInfo_IfdROT
, NDR_POINTER_UNIQUE
,
758 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
759 dissect_InstInfo_IfdStg
, NDR_POINTER_UNIQUE
,
761 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
763 len
= offset
- old_offset
;
765 /* TODO expert info */
768 else if (size
> len
) {
769 proto_tree_add_item(sub_tree
, hf_sysact_unused_buffer
, tvb
, offset
, size
- len
, ENC_NA
);
772 offset
= old_offset
+ size
;
778 dissect_dcom_COSERVERINFO(tvbuff_t
*tvb
, int offset
,
779 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int hfindex
)
781 proto_item
*sub_item
;
782 proto_tree
*sub_tree
;
785 if (di
->conformant_run
) {
789 sub_item
= proto_tree_add_item(tree
, hfindex
, tvb
, offset
, 0, ENC_NA
);
790 sub_tree
= proto_item_add_subtree(sub_item
, ett_dcom_securityinfo
);
793 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
794 hf_sysact_si_ci_res
, NULL
);
795 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
796 dissect_ndr_wchar_cvstring
, NDR_POINTER_UNIQUE
, "Name(wstring)",
797 hf_sysact_si_ci_string
);
798 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
799 NULL
, NDR_POINTER_UNIQUE
, "AuthInfoPtr", -1);
800 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
801 hf_sysact_si_ci_res
, NULL
);
803 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
805 proto_item_set_len(sub_item
, offset
- old_offset
);
811 dissect_dcom_SI_ServerInfo(tvbuff_t
*tvb
, int offset
,
812 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
814 offset
= dissect_dcom_COSERVERINFO(tvb
, offset
, pinfo
, tree
, di
, drep
,
815 hf_sysact_si_serverinfo
);
820 dissect_dcom_SecurtiyInfo(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
821 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size
)
823 proto_tree
*sub_tree
;
829 /* TODO: expert info */
833 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, size
, ett_dcom_securityinfo
, NULL
, "SecurityInfo");
835 offset
= dissect_TypeSzCommPrivHdr(tvb
, offset
, pinfo
, sub_tree
, di
,drep
);
837 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
838 hf_sysact_si_authflalgs
, NULL
);
839 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
840 dissect_dcom_SI_ServerInfo
, NDR_POINTER_UNIQUE
, "ServerInfoPtr", -1);
841 /*This SHOULD be NULL and MUST be ignored on receipt*/
842 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
843 NULL
, NDR_POINTER_UNIQUE
, "ReservedPtr", -1);
844 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
846 len
= offset
- old_offset
;
848 /* TODO expert info */
851 else if (size
> len
) {
852 proto_tree_add_item(sub_tree
, hf_sysact_unused_buffer
, tvb
, offset
, size
- len
, ENC_NA
);
855 offset
= old_offset
+ size
;
860 dissect_dcom_LocationInfo(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
861 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size
)
863 proto_tree
*sub_tree
;
869 /* TODO: expert info */
873 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, size
, ett_dcom_locationinfo
, NULL
, "LocationInfo");
875 offset
= dissect_TypeSzCommPrivHdr(tvb
, offset
, pinfo
, sub_tree
, di
, drep
);
877 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
878 dissect_ndr_wchar_cvstring
, NDR_POINTER_UNIQUE
, "MachineNamePtr",
879 hf_sysact_li_string
);
881 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
882 hf_sysact_li_procid
, NULL
);
883 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
884 hf_sysact_li_apartid
, NULL
);
885 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
886 hf_sysact_li_ctxid
, NULL
);
888 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
890 len
= offset
- old_offset
;
892 /* TODO expert info */
895 else if (size
> len
) {
896 proto_tree_add_item(sub_tree
, hf_sysact_unused_buffer
, tvb
, offset
, size
- len
, ENC_NA
);
899 offset
= old_offset
+ size
;
905 dissect_dcom_ProtoSeq(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
906 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
908 offset
= dissect_dcom_WORD(tvb
, offset
, pinfo
, tree
, di
, drep
,
909 hf_sysact_sri_protseq
, NULL
);
915 dissect_dcom_ProtoSeqArray(tvbuff_t
*tvb
, int offset
,
916 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
918 offset
= dissect_ndr_ucarray(tvb
, offset
, pinfo
, tree
, di
, drep
,
919 dissect_dcom_ProtoSeq
);
924 dissect_dcom_customREMOTE_REQUEST_SCM_INFO(tvbuff_t
*tvb
, int offset
,
925 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
927 proto_item
*sub_item
;
928 proto_tree
*sub_tree
;
931 if (di
->conformant_run
) {
935 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, 0, ett_dcom_rmtrqst
, &sub_item
, "RemoteRequest");
938 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
939 hf_sysact_sri_cltimplvl
, NULL
);
940 offset
= dissect_dcom_WORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
941 hf_sysact_sri_protseqnum
, NULL
);
942 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
943 dissect_dcom_ProtoSeqArray
, NDR_POINTER_UNIQUE
, "ProtocolSeqsArrayPtr", -1);
944 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
946 proto_item_set_len(sub_item
, offset
- old_offset
);
952 dissect_dcom_ScmRqstInfo(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
953 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size
)
955 proto_tree
*sub_tree
;
961 /* TODO: expert info */
965 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, size
, ett_dcom_scmrqstinfo
, NULL
, "ScmRequestInfo");
967 offset
= dissect_TypeSzCommPrivHdr(tvb
, offset
, pinfo
, sub_tree
, di
, drep
);
969 /*This MUST be set to NULL and MUST be ignored on receipt*/
970 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
971 NULL
, NDR_POINTER_UNIQUE
, "Ptr", -1);
972 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
973 dissect_dcom_customREMOTE_REQUEST_SCM_INFO
, NDR_POINTER_UNIQUE
,
974 "RemoteRequestPtr", -1);
975 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
977 len
= offset
- old_offset
;
979 /* TODO expert info */
982 else if (size
> len
) {
983 proto_tree_add_item(sub_tree
, hf_sysact_unused_buffer
, tvb
, offset
, size
- len
, ENC_NA
);
986 offset
= old_offset
+ size
;
992 dissect_dcom_IfId(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
993 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
995 offset
= dissect_dcom_UUID(tvb
, offset
, pinfo
, tree
, di
, drep
,
996 hf_sysact_pi_iid
, NULL
);
1001 dissect_dcom_IfIds(tvbuff_t
*tvb
, int offset
,
1002 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1004 offset
= dissect_ndr_ucarray(tvb
, offset
, pinfo
, tree
, di
, drep
,
1010 dissect_dcom_ReturnVal(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
1011 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1013 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, tree
, di
, drep
,
1014 hf_sysact_pi_retval
, NULL
);
1019 dissect_dcom_ReturnVals(tvbuff_t
*tvb
, int offset
,
1020 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1022 offset
= dissect_ndr_ucarray(tvb
, offset
, pinfo
, tree
, di
, drep
,
1023 dissect_dcom_ReturnVal
);
1028 dissect_OneInterfData(tvbuff_t
*tvb
, int offset
,
1029 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1031 offset
= dissect_dcom_MInterfacePointer(tvb
, offset
, pinfo
, tree
, di
, drep
,
1032 hf_sysact_pi_interf
, NULL
);
1037 dissect_dcom_OneInterfDataPtr(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
1038 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1040 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
,
1041 dissect_OneInterfData
, NDR_POINTER_UNIQUE
, "InterfacePtr", -1);
1046 * This MUST be an array of MInterfacePointer pointers containing the OBJREFs for
1047 * the interfaces returned by the server.
1050 dissect_dcom_InterfData(tvbuff_t
*tvb
, int offset
,
1051 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1053 offset
= dissect_ndr_ucarray(tvb
, offset
, pinfo
, tree
, di
, drep
,
1054 dissect_dcom_OneInterfDataPtr
);
1055 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
1060 dissect_dcom_PropsOutInfo(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
1061 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size
)
1063 proto_tree
*sub_tree
;
1064 int old_offset
, len
;
1066 old_offset
= offset
;
1069 /* TODO: expert info */
1073 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, size
, ett_dcom_propsoutput
, NULL
, "PropertiesOutput");
1075 offset
= dissect_TypeSzCommPrivHdr(tvb
, offset
, pinfo
, sub_tree
, di
, drep
);
1077 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1078 hf_sysact_pi_ifnum
, NULL
);
1080 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1081 dissect_dcom_IfIds
, NDR_POINTER_UNIQUE
, "InterfaceIdsPtr", -1);
1082 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1083 dissect_dcom_ReturnVals
, NDR_POINTER_UNIQUE
, "ReturnValuesPtr", -1);
1084 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1085 dissect_dcom_InterfData
, NDR_POINTER_UNIQUE
, "InterfacePtrsPtr", -1);
1086 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
1088 len
= offset
- old_offset
;
1090 /* TODO expert info */
1093 else if (size
> len
) {
1094 proto_tree_add_item(sub_tree
, hf_sysact_unused_buffer
, tvb
, offset
, size
- len
, ENC_NA
);
1097 offset
= old_offset
+ size
;
1104 *typedef struct tagDUALSTRINGARRAY {
1105 * unsigned short wNumEntries;
1106 * unsigned short wSecurityOffset;
1107 * [size_is(wNumEntries)] unsigned short aStringArray[];
1111 dissect_dcom_OxidBindings(tvbuff_t
*tvb
, int offset
,
1112 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1114 proto_item
*sub_item
;
1115 proto_tree
*sub_tree
;
1118 if (di
->conformant_run
) {
1122 old_offset
= offset
;
1123 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, 0, ett_dcom_oxidbinding
, &sub_item
, "OxidBindings");
1125 offset
= dissect_dcom_dcerpc_array_size(tvb
, offset
, pinfo
, sub_tree
, di
, drep
, NULL
);
1126 offset
= dissect_dcom_DUALSTRINGARRAY(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1127 hf_sysact_scmri_binding
, NULL
);
1129 proto_item_set_len(sub_item
, offset
- old_offset
);
1135 dissect_dcom_customREMOTE_REPLY_SCM_INFO(tvbuff_t
*tvb
, int offset
,
1136 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1138 proto_item
*sub_item
;
1139 proto_tree
*sub_tree
;
1142 if (di
->conformant_run
) {
1146 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, 0, ett_dcom_rmtresp
, &sub_item
, "RemoteReply");
1148 old_offset
= offset
;
1149 offset
= dissect_dcom_ID(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1150 hf_sysact_scmri_oxid
, NULL
);
1151 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1152 dissect_dcom_OxidBindings
, NDR_POINTER_UNIQUE
, "OxidBindingsPtr", -1);
1153 offset
= dissect_dcom_UUID(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1154 hf_sysact_scmri_rmtunknid
, NULL
);
1155 offset
= dissect_dcom_DWORD(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1156 hf_sysact_scmri_authhint
, NULL
);
1157 offset
= dissect_dcom_COMVERSION(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1159 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
1161 proto_item_set_len(sub_item
, offset
- old_offset
);
1168 dissect_dcom_ScmReplyInfo(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
1169 proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
, int size
)
1171 proto_tree
*sub_tree
;
1172 int old_offset
, len
;
1174 old_offset
= offset
;
1177 /* TODO: expert info */
1181 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, size
, ett_dcom_scmrespinfo
, NULL
, "ScmReplyInfo");
1183 offset
= dissect_TypeSzCommPrivHdr(tvb
, offset
, pinfo
, sub_tree
, di
, drep
);
1185 /*This MUST be set to NULL and MUST be ignored on receipt*/
1186 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1187 NULL
, NDR_POINTER_UNIQUE
, "Ptr", -1);
1188 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, sub_tree
, di
, drep
,
1189 dissect_dcom_customREMOTE_REPLY_SCM_INFO
, NDR_POINTER_UNIQUE
,
1190 "RemoteRequestPtr", -1);
1191 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
1193 len
= offset
- old_offset
;
1195 /* TODO expert info */
1198 else if (size
> len
) {
1199 proto_tree_add_item(sub_tree
, hf_sysact_unused_buffer
, tvb
, offset
, size
- len
, ENC_NA
);
1202 offset
= old_offset
+ size
;
1208 sysact_register_routines(void)
1210 dcom_register_routine(dissect_dcom_ActivationProperties
, &iid_ActivationPropertiesIn
);
1211 dcom_register_routine(dissect_dcom_ActivationProperties
, &iid_ActivationPropertiesOut
);
1212 dcom_register_routine(dissect_dcom_SpecialSystemProperties
, &clsid_SpecialSystemProperties
);
1213 dcom_register_routine(dissect_dcom_InstantiationInfo
, &clsid_InstantiationInfo
);
1214 dcom_register_routine(dissect_dcom_ActivationContextInfo
, &clsid_ActivationContextInfo
);
1215 dcom_register_routine(dissect_dcom_IContext
, &iid_IContext
);
1216 dcom_register_routine(dissect_dcom_SecurtiyInfo
, &clsid_SecurityInfo
);
1217 dcom_register_routine(dissect_dcom_LocationInfo
, &clsid_ServerLocationInfo
);
1218 dcom_register_routine(dissect_dcom_ScmRqstInfo
, &clsid_ScmRequestInfo
);
1219 dcom_register_routine(dissect_dcom_PropsOutInfo
, &clsid_PropsOutInfo
);
1220 dcom_register_routine(dissect_dcom_ScmReplyInfo
, &clsid_ScmReplyInfo
);
1221 dcom_register_routine(dissect_dcom_InstanceInfo
, &clsid_InstanceInfo
);
1222 dcom_register_routine(dissect_dcom_IStorage
, &iid_IStorage
);
1228 dissect_remsysact_remotecreateinstance_rqst(tvbuff_t
*tvb
, int offset
,
1229 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1232 sysact_register_routines();
1234 offset
= dissect_dcom_this(tvb
, offset
, pinfo
, tree
, di
, drep
);
1236 /* XXX - what is this? */
1237 offset
= dissect_dcom_nospec_data(tvb
, offset
, pinfo
, tree
, drep
, 4);
1238 offset
= dissect_dcom_PMInterfacePointer(tvb
, offset
, pinfo
, tree
, di
, drep
,
1239 hf_sysact_actproperties
, NULL
/* XXX */);
1244 dissect_remsysact_remotecreateinstance_resp(tvbuff_t
*tvb
, int offset
,
1245 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1247 sysact_register_routines();
1249 offset
= dissect_dcom_that(tvb
, offset
, pinfo
, tree
, di
, drep
);
1251 offset
= dissect_dcom_PMInterfacePointer(tvb
, offset
, pinfo
, tree
, di
, drep
,
1252 hf_sysact_actproperties
, NULL
/* XXX */);
1254 offset
= dissect_dcom_HRESULT(tvb
, offset
, pinfo
, tree
, di
, drep
,
1255 NULL
/* pu32HResult */);
1261 dissect_remsysact_remotegetclassobject_rqst(tvbuff_t
*tvb
, int offset
,
1262 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1264 sysact_register_routines();
1266 offset
= dissect_dcom_this(tvb
, offset
, pinfo
, tree
, di
, drep
);
1267 offset
= dissect_dcom_PMInterfacePointer(tvb
, offset
, pinfo
, tree
, di
, drep
,
1268 hf_sysact_actproperties
, NULL
);
1274 dissect_remsysact_remotegetclassobject_resp(tvbuff_t
*tvb
, int offset
,
1275 packet_info
*pinfo
, proto_tree
*tree
, dcerpc_info
*di
, uint8_t *drep
)
1277 sysact_register_routines();
1279 offset
= dissect_dcom_that(tvb
, offset
, pinfo
, tree
, di
, drep
);
1281 offset
= dissect_dcom_PMInterfacePointer(tvb
, offset
, pinfo
, tree
, di
, drep
,
1282 hf_sysact_actproperties
, NULL
);
1284 offset
= dissect_dcom_HRESULT(tvb
, offset
, pinfo
, tree
, di
, drep
,
1285 NULL
/* pu32HResult */);
1290 static const dcerpc_sub_dissector ISystemActivator_dissectors
[] = {
1291 { 0, "QueryInterfaceIRemoteSCMActivator", NULL
, NULL
},
1292 { 1, "AddRefIRemoteISCMActivator", NULL
, NULL
},
1293 { 2, "ReleaseIRemoteISCMActivator", NULL
, NULL
},
1294 { 3, "RemoteGetClassObject", dissect_remsysact_remotegetclassobject_rqst
, dissect_remsysact_remotegetclassobject_resp
},
1295 { 4, "RemoteCreateInstance", dissect_remsysact_remotecreateinstance_rqst
, dissect_remsysact_remotecreateinstance_resp
},
1296 { 0, NULL
, NULL
, NULL
},
1300 proto_register_ISystemActivator (void)
1303 static hf_register_info hf
[] = {
1305 { "Operation", "isystemactivator.opnum", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1306 { &hf_sysact_actproperties
,
1307 { "IActProperties", "isystemactivator.actproperties", FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1309 { &hf_sysact_unknown
,
1310 { "IUnknown", "isystemactivator.unknown", FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1314 static hf_register_info hf_actproperties
[] = {
1315 { &hf_sysact_totalsize
,
1316 { "Totalsize", "isystemactivator.actproperties.size", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1318 { "Reserved", "isystemactivator.actproperties.resv", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1320 { &hf_sysact_customhdrsize
,
1321 { "CustomHeaderSize", "isystemactivator.customhdr.size", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1322 { &hf_sysact_dstctx
,
1323 { "DestinationContext", "isystemactivator.customhdr.dc", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1324 { &hf_sysact_actpropnumber
,
1325 { "NumActivationPropertyStructs", "isystemactivator.customhdr.actpropnumber", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1326 { &hf_sysact_actpropclsinfoid
,
1327 { "ClassInfoClsid", "isystemactivator.customhdr.clsinfoid", FT_GUID
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1329 { &hf_sysact_actpropclsids
,
1330 { "PropertyGuids", "isystemactivator.customhdr.clsids", FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1332 { &hf_sysact_actpropclsid
,
1333 { "PropertyStructGuid", "isystemactivator.customhdr.clsid", FT_GUID
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1335 { &hf_sysact_actpropsizes
,
1336 { "PropertyDataSizes", "isystemactivator.customhdr.datasizes", FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1338 { &hf_sysact_actpropsize
,
1339 { "PropertyDataSize", "isystemactivator.customhdr.datasize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1341 /*SpecialSystemProperties*/
1342 { &hf_sysact_spsysprop_sid
,
1343 { "SessionID", "isystemactivator.properties.spcl.sid", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, "A value that uniquely identifies a logon session on the server", HFILL
}},
1344 { &hf_sysact_spsysprop_remotethissid
,
1345 { "RemoteThisSessionID", "isystemactivator.properties.spcl.remotesid", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1346 { &hf_sysact_spsysprop_cltimpersonating
,
1347 { "ClientImpersonating", "isystemactivator.properties.spcl.cltimp", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1348 { &hf_sysact_spsysprop_partitionid
,
1349 { "PartitionIDPresent", "isystemactivator.properties.spcl.partitionid", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1350 { &hf_sysact_spsysprop_defauthlvl
,
1351 { "DefaultAuthnLevel", "isystemactivator.properties.spcl.defauthlvl", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1352 { &hf_sysact_spsysprop_partition
,
1353 { "PartitionGuid", "isystemactivator.properties.spcl.partition", FT_GUID
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1354 { &hf_sysact_spsysprop_procrqstflgs
,
1355 { "ProcessRequestFlags", "isystemactivator.properties.spcl.procreqstflgs", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1356 { &hf_sysact_spsysprop_origclsctx
,
1357 { "OriginalClassContext", "isystemactivator.properties.spcl.origclsctx", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1358 { &hf_sysact_spsysprop_flags
,
1359 { "Flags", "isystemactivator.properties.spcl.flags", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1361 { &hf_sysact_spsysprop_procid
,
1362 { "ProcessID", "isystemactivator.properties.spcl.procid", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1365 { &hf_sysact_spsysprop_hwnd
,
1366 { "hWnd", "isystemactivator.properties.spcl.hwnd", FT_UINT64
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1369 /*InstantiationInfo*/
1370 { &hf_sysact_instninfo_clsid
,
1371 { "InstantiatedObjectClsId", "isystemactivator.properties.instninfo.clsid", FT_GUID
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1372 { &hf_sysact_instninfo_clsctx
,
1373 { "ClassContext", "isystemactivator.properties.instninfo.clsctx", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1374 { &hf_sysact_instninfo_actflags
,
1375 { "ActivationFlags", "isystemactivator.properties.instninfo.actflags", FT_UINT32
, BASE_DEC_HEX
, VALS(instninfo_actflags
), 0x0, NULL
, HFILL
}},
1376 { &hf_sysact_instninfo_issurrogate
,
1377 { "FlagsSurrogate", "isystemactivator.properties.instninfo.issurogate", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1378 { &hf_sysact_instninfo_iidcount
,
1379 { "InterfaceIdCount", "isystemactivator.properties.instninfo.iidcount", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1380 { &hf_sysact_instninfo_instflags
,
1381 { "InstantiationFlag", "isystemactivator.properties.instninfo.instflags", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1382 { &hf_sysact_instninfo_entiresize
,
1383 { "EntirePropertySize", "isystemactivator.properties.instninfo.entiresize", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1384 { &hf_sysact_instninfo_iid
,
1385 { "InterfaceIds", "isystemactivator.properties.instninfo.iid", FT_GUID
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1387 /*ActivationContextInfo*/
1388 { &hf_sysact_actctxinfo_cltok
,
1389 { "ClientOk", "isystemactivator.properties.actctxinfo.cltok", FT_INT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1390 { &hf_sysact_context
,
1391 { "ClientContext", "isystemactivator.properties.context", FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1394 { &hf_sysact_instinfo_mode
,
1395 { "Mode", "isystemactivator.properties.instinfo.mode", FT_INT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1396 { &hf_sysact_instinfo_stg
,
1397 { "IfdStg", "isystemactivator.properties.instinfo.ifdstg", FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1401 { "IStorage", "isystemactivator.properties.istg", FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1404 { &hf_sysact_ctx_id
,
1405 { "ContextID", "isystemactivator.properties.context.id", FT_GUID
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1406 { &hf_sysact_ctx_flags
,
1407 { "Flags", "isystemactivator.properties.context.flags", FT_UINT32
, BASE_HEX
, VALS(dcom_context_flag_vals
), 0x0, NULL
, HFILL
}},
1408 { &hf_sysact_ctx_res
,
1409 { "Reserved", "isystemactivator.properties.context.res", FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1410 { &hf_sysact_ctx_numextents
,
1411 { "NumExtents", "isystemactivator.properties.context.numext", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1412 { &hf_sysact_ctx_extentscnt
,
1413 { "ExtentCount", "isystemactivator.properties.context.extcnt", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1414 { &hf_sysact_ctx_mashflags
,
1415 { "MarshalFlags", "isystemactivator.properties.context.mashflags", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1416 { &hf_sysact_ctx_count
,
1417 { "ContextPropertyCount", "isystemactivator.properties.context.cnt", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1418 { &hf_sysact_ctx_frozen
,
1419 { "Frozen", "isystemactivator.properties.context.frz", FT_UINT32
, BASE_HEX
, VALS(boolean_flag_vals
), 0x0, NULL
, HFILL
}},
1422 { &hf_sysact_si_authflalgs
,
1423 { "AuthenticationFlags", "isystemactivator.properties.si.authflags", FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1424 { &hf_sysact_si_serverinfo
,
1425 { "ServerInfo", "isystemactivator.properties.si.ci", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1426 { &hf_sysact_si_ci_res
,
1427 { "Reserved", "isystemactivator.properties.si.ci.res", FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1428 { &hf_sysact_si_ci_string
,
1429 { "String", "isystemactivator.properties.si.ci.name", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1432 { &hf_sysact_li_string
,
1433 { "String", "isystemactivator.properties.li.name", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1434 { &hf_sysact_li_procid
,
1435 { "ProcessId", "isystemactivator.properties.li.procid", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1436 { &hf_sysact_li_apartid
,
1437 { "ApartmentId", "isystemactivator.properties.li.apartid", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1438 { &hf_sysact_li_ctxid
,
1439 { "ContextId", "isystemactivator.properties.li.ctxid", FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1442 { &hf_sysact_sri_cltimplvl
,
1443 { "ClientImpersonationLevel", "isystemactivator.properties.sri.cltimplvl", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1444 { &hf_sysact_sri_protseqnum
,
1445 { "NumProtocolSequences", "isystemactivator.properties.sri.protseqnum", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1446 { &hf_sysact_sri_protseq
,
1447 { "ProtocolSeq", "isystemactivator.properties.sri.protseq", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1450 { &hf_sysact_pi_ifnum
,
1451 { "NumInterfaces", "isystemactivator.properties.pi.ifnum", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1452 { &hf_sysact_pi_retval
,
1453 { "ReturnValue", "isystemactivator.properties.retval", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1454 { &hf_sysact_pi_interf
,
1455 { "Interface", "isystemactivator.properties.interf", FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1456 { &hf_sysact_pi_iid
,
1457 { "IID", "isystemactivator.properties.iid", FT_GUID
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1460 { &hf_sysact_scmri_rmtunknid
,
1461 { "IRemUnknownInterfacePointerId", "isystemactivator.properties.scmresp.rmtunknid", FT_GUID
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1462 { &hf_sysact_scmri_authhint
,
1463 { "AuthenticationHint", "isystemactivator.properties.scmresp.authhint", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1464 { &hf_sysact_scmri_binding
,
1465 { "Bindings", "isystemactivator.properties.scmresp.binding", FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1466 { &hf_sysact_scmri_oxid
,
1467 { "OXID", "isystemactivator.properties.scmresp.oxid", FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1468 { &hf_sysact_unused_buffer
,
1469 { "Unused buffer", "isystemactivator.unused_buffer", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1472 static hf_register_info hf_tshdr
[] = {
1474 { "CommonHeader", "isystemactivator.actproperties.ts.hdr", FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1476 { "PrivateHeader", "isystemactivator.actproperties.ts.hdr", FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
1478 { "Version", "isystemactivator.actproperties.ts.ver", FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1479 { &hf_typesz_endianness
,
1480 { "Endianness", "isystemactivator.actproperties.ts.end", FT_UINT8
, BASE_HEX
, VALS(ts_endian_vals
), 0x0, NULL
, HFILL
}},
1481 { &hf_typesz_commhdrlen
,
1482 { "CommonHeaderLength", "isystemactivator.actproperties.ts.chl", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1483 { &hf_typesz_filler
,
1484 { "Filler", "isystemactivator.actproperties.ts.fil", FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
1485 { &hf_typesz_buflen
,
1486 { "ObjectBufferLength", "isystemactivator.actproperties.ts.buflen", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
1491 static int *ett
[] = {
1492 &ett_isystemactivator
,
1499 &ett_dcom_spclsysprop
,
1501 &ett_dcom_instantianinfo
,
1502 &ett_dcom_actctxinfo
,
1503 &ett_dcom_instanceinfo
,
1506 &ett_dcom_securityinfo
,
1507 &ett_dcom_locationinfo
,
1508 &ett_dcom_scmrqstinfo
,
1511 &ett_dcom_propsoutput
,
1512 &ett_dcom_scmrespinfo
,
1514 &ett_dcom_oxidbinding
,
1518 proto_ISystemActivator
= proto_register_protocol ("ISystemActivator ISystemActivator Resolver", "ISystemActivator", "isystemactivator");
1519 proto_register_field_array (proto_ISystemActivator
, hf
, array_length (hf
));
1520 proto_register_field_array (proto_ISystemActivator
, hf_actproperties
, array_length (hf_actproperties
));
1521 proto_register_field_array(proto_ISystemActivator
, hf_tshdr
, array_length(hf_tshdr
));
1522 proto_register_subtree_array (ett
, array_length (ett
));
1526 proto_reg_handoff_ISystemActivator (void)
1528 /* Register the protocol as dcerpc */
1529 dcerpc_init_uuid (proto_ISystemActivator
, ett_isystemactivator
, &uuid_ISystemActivator
,
1530 ver_ISystemActivator
, ISystemActivator_dissectors
, hf_opnum
);
1534 * Editor modelines - https://www.wireshark.org/tools/modelines.html
1539 * indent-tabs-mode: nil
1542 * vi: set shiftwidth=4 tabstop=8 expandtab:
1543 * :indentSize=4:tabSize=8:noTabs=true: