diff options
author | Michael Mann <mmann78@netscape.net> | 2014-09-20 18:11:05 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2014-09-20 22:13:22 +0000 |
commit | 8605bbfb64d8074486ece2bc3508d2be88dd2d9d (patch) | |
tree | aa5964af98b844570859620bb743afc91ca1a25e /epan/dissectors/pidl | |
parent | be7f0539848238627db0e18acdc2dae5715c3182 (diff) |
Restore the inclusion of request.cnf.c and response.cnf.c in the generated DCE/RPC MAPI dissector.
Also remove the use of proto_tree_add_text for something filterable.
Change-Id: I7c252fb24f5ab51e4d1913fe3b0e520a4150baec
Reviewed-on: https://code.wireshark.org/review/4214
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/pidl')
-rw-r--r-- | epan/dissectors/pidl/mapi/mapi.cnf | 11 | ||||
-rw-r--r-- | epan/dissectors/pidl/mapi/request.cnf.c | 105 | ||||
-rw-r--r-- | epan/dissectors/pidl/mapi/response.cnf.c | 55 |
3 files changed, 76 insertions, 95 deletions
diff --git a/epan/dissectors/pidl/mapi/mapi.cnf b/epan/dissectors/pidl/mapi/mapi.cnf index 78f2190b52..fffb620554 100644 --- a/epan/dissectors/pidl/mapi/mapi.cnf +++ b/epan/dissectors/pidl/mapi/mapi.cnf @@ -28,6 +28,7 @@ HF_RENAME hf_mapi_EcDoRpc_MAPI_REQ_opnum hf_mapi_MAPI_OPNUM HF_FIELD hf_mapi_pdu_len "Length" "mapi.pdu.len" FT_UINT16 BASE_HEX NULL 0x0 "Size of the command PDU" HFILL HF_FIELD hf_mapi_decrypted_data "Decrypted data" "mapi.decrypted.data" FT_BYTES BASE_NONE NULL 0 NULL HFILL +HF_FIELD hf_mapi_MAPI_handle "MAPI handle" "mapi.mapi_handle" FT_UINT32 BASE_HEX NULL 0 NULL HFILL NOEMIT SBinary_short NOEMIT MV_LONG_STRUCT @@ -87,9 +88,8 @@ static int mapi_dissect_element_request_handles_cnf(tvbuff_t *tvb _U_, int offse gint reported_len; gint i; gint handles_cnt = 0; - int old_offset; guint32 value; - proto_tree *tr; + proto_tree *tr = NULL; reported_len = tvb_reported_length_remaining(tvb, offset); @@ -98,10 +98,9 @@ static int mapi_dissect_element_request_handles_cnf(tvbuff_t *tvb _U_, int offse tr = proto_tree_add_subtree_format(tree, tvb, offset, reported_len, ett_mapi_mapi_request, NULL, "MAPI Handles: %d", handles_cnt); for (i = 0; i < handles_cnt; i++) { - old_offset = offset; - value = tvb_get_letohl(tvb, offset); - offset += 4; - proto_tree_add_text(tr, tvb, old_offset, offset - old_offset, "[%.2d] MAPI handle: 0x%.8x", i, value); + value = tvb_get_letohl(tvb, offset); + proto_tree_add_uint_format(tr, hf_mapi_MAPI_handle, tvb, offset, 4, value, "[%.2d] MAPI handle: 0x%.8x", i, value); + offset += 4; } return offset; diff --git a/epan/dissectors/pidl/mapi/request.cnf.c b/epan/dissectors/pidl/mapi/request.cnf.c index e94f2e82cf..4d49102cfe 100644 --- a/epan/dissectors/pidl/mapi/request.cnf.c +++ b/epan/dissectors/pidl/mapi/request.cnf.c @@ -33,6 +33,23 @@ NOEMIT OpenMsgStore_req ETT_FIELD ett_mapi_OpenMsgStore_req MANUAL mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore +# +# Misc. filters +# +HF_FIELD hf_mapi_MAPI_OPNUM "Opnum" "mapi.EcDoRpc_MAPI_REQ.opnum" FT_UINT8 BASE_HEX VALS(mapi_MAPI_OPNUM_vals) 0 NULL HFILL +HF_RENAME hf_mapi_EcDoRpc_MAPI_REQ_opnum hf_mapi_MAPI_OPNUM +HF_FIELD hf_mapi_EcDoRpc_mapi_flags "mapi_flags" "mapi.EcDoRpc.mapi_flags" FT_UINT8 BASE_HEX NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_folder_id "Folder ID" "mapi.EcDoRpc.folder_id" FT_UINT64 BASE_HEX NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_unknown2 "Unknown2" "mapi.EcDoRpc.unknown2" FT_UINT8 BASE_DEC NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_unknown3 "Unknown3" "mapi.EcDoRpc.unknown3" FT_UINT32 BASE_HEX NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_mapi_tag "MAPI tag" "mapi.EcDoRpc.mapi_tag" FT_UINT32 BASE_HEX NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_codepage "Codepage" "mapi.EcDoRpc.codepage" FT_UINT32 BASE_HEX NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_padding "Padding" "mapi.EcDoRpc.padding" FT_UINT32 BASE_HEX NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_row "Row" "mapi.EcDoRpc.row" FT_UINT8 BASE_HEX NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_str_length "Length" "mapi.EcDoRpc.str_length" FT_UINT16 BASE_HEX NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_mailbox "Mailbox" "mapi.EcDoRpc.mailbox" FT_STRING BASE_NONE NULL 0 NULL HFILL + + CODE START int @@ -41,11 +58,8 @@ mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvbuff_t *tvb _U_, int offset _U_, packet_i proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - int cur_offset; guint8 opnum; - guint8 mapi_flags; - guint8 handle_idx; - + old_offset = offset; if (parent_tree) { @@ -53,26 +67,21 @@ mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvbuff_t *tvb _U_, int offset _U_, packet_i tree = proto_item_add_subtree(item, ett_mapi_EcDoRpc_MAPI_REQ); } - cur_offset = offset; opnum = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_mapi_MAPI_OPNUM, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "opnum: %s", val_to_str(opnum, mapi_MAPI_OPNUM_vals, "Unknown MAPI operation")); col_append_fstr(pinfo->cinfo, COL_INFO, " + %s", val_to_str(opnum, mapi_MAPI_OPNUM_vals, "Unknown MAPI operation")); - cur_offset = offset; - mapi_flags = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_mapi_flags, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "mapi_flags: 0x%x", mapi_flags); - cur_offset = offset; - handle_idx = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_handle_index, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "handle index: %d", handle_idx); switch(opnum) { case op_MAPI_Release: - offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_Release(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_Release(tvb, offset, pinfo, tree, di, drep); break; case op_MAPI_OpenFolder: offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenFolder(tvb, offset, pinfo, tree, di, drep); @@ -112,11 +121,10 @@ mapi_dissect_element_EcDoRpc_request_(tvbuff_t *tvb _U_, int offset _U_, packet_ gint reported_len; guint16 pdu_len; guint32 i; - proto_item *it = NULL; proto_tree *tr = NULL; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_mapi_request, &size); - proto_tree_add_text(tree, tvb, start_offset, offset - start_offset + size, "Subcontext size: 0x%x", size); + proto_tree_add_uint(tree, hf_mapi_EcDoRpc_subcontext_size, tvb, start_offset, offset - start_offset + size, size); reported_len = tvb_reported_length_remaining(tvb, offset); @@ -136,11 +144,10 @@ mapi_dissect_element_EcDoRpc_request_(tvbuff_t *tvb _U_, int offset _U_, packet_ decrypted_tvb = tvb_new_child_real_data(tvb, decrypted_data, size, reported_len); tvb_set_free_cb(decrypted_tvb, g_free); - + add_new_data_source(pinfo, decrypted_tvb, "Decrypted MAPI"); - it = proto_tree_add_text(tree, decrypted_tvb, 0, size, "Decrypted MAPI PDU"); - tr = proto_item_add_subtree(it, ett_mapi_mapi_request); + tr = proto_tree_add_subtree(tree, decrypted_tvb, 0, size, ett_mapi_mapi_request, NULL, "Decrypted MAPI PDU"); pdu_len = tvb_get_letohs(decrypted_tvb, 0); proto_tree_add_uint(tr, hf_mapi_pdu_len, decrypted_tvb, 0, 2, pdu_len); @@ -168,7 +175,7 @@ static int mapi_dissect_element_EcDoRpc_request__(tvbuff_t *tvb _U_, int offset offset += 2; while (offset < length) { - offset = mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvb, offset, pinfo, tree, drep, hf_mapi_mapi_request_mapi_req, length - offset); + offset = mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_request_mapi_req, length - offset); } return offset; @@ -195,16 +202,11 @@ mapi_dissect_struct_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf /*************************/ /* EcDoRpc Function 0x2 */ static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_) +mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { proto_item *item = NULL; proto_tree *tree = NULL; - int old_offset; int origin_offset; - /**** Function parameters ****/ - guint8 handle_idx; - guint64 folder_id; - guint8 unknown; origin_offset = offset; @@ -213,38 +215,30 @@ mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenFolder(tvbuff_t *tvb _U_, int of tree = proto_item_add_subtree(item, ett_mapi_OpenFolder_req); } - old_offset = offset; - handle_idx = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_handle_index, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "handle index: %d", handle_idx); - old_offset = offset; - folder_id = tvb_get_letoh64(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_folder_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); offset += 8; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "folder ID: 0x%" G_GINT64_MODIFIER "x", folder_id); - old_offset = offset; - unknown = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_unknown2, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "unknown: %d", unknown); - + proto_item_set_len(item, offset - origin_offset); - + return offset; } /*************************/ /* EcDoRpc Function 0x7 */ static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_) +mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { proto_item *item = NULL; proto_tree *tree = NULL; - int old_offset; int origin_offset; guint16 i; /**** Function parameters ****/ - guint32 unknown; guint16 prop_count; guint32 mapitag; @@ -255,21 +249,17 @@ mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvbuff_t *tvb _U_, int offs tree = proto_item_add_subtree(item, ett_mapi_GetProps_req); } - old_offset = offset; - unknown = tvb_get_letohl(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_unknown3, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "unknown: 0x%x", unknown); - old_offset = offset; prop_count = tvb_get_letohs(tvb, offset); + proto_tree_add_uint(tree, hf_mapi_EcDoRpc_prop_count, tvb, offset, 2, prop_count); offset += 2; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "prop_count: %d", prop_count); for (i = 0; i < prop_count; i++) { - old_offset = offset; - mapitag = tvb_get_letohl(tvb, offset); - offset += 4; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "[%.2d] %s", i, val_to_str(mapitag, mapi_MAPITAGS_vals, "Unknown MAPITAGS")); + mapitag = tvb_get_letohl(tvb, offset); + proto_tree_add_uint_format(tree, hf_mapi_EcDoRpc_mapi_tag, tvb, offset, 4, mapitag, "[%.2d] %s", i, val_to_str(mapitag, mapi_MAPITAGS_vals, "Unknown MAPITAGS")); + offset += 4; } proto_item_set_len(item, offset - origin_offset); @@ -281,7 +271,7 @@ mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvbuff_t *tvb _U_, int offs /*************************/ /* EcDoRpc Function 0xFE */ static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_) +mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -302,29 +292,22 @@ mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvbuff_t *tvb _U_, int tree = proto_item_add_subtree(item, ett_mapi_OpenMsgStore_req); } - codepage = tvb_get_letohl(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_codepage, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "codepage: 0x%x", codepage); - old_offset = offset; - padding = tvb_get_letohl(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_padding, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "padding: 0x%x", padding); - old_offset = offset; - row = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_row, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "row: 0x%x", row); - old_offset = offset; str_len = tvb_get_letohs(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_str_length, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "str length: 0x%x", str_len); - old_offset = offset; mailbox = tvb_format_text(tvb, offset, str_len - 1); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_mailbox, tvb, offset, str_len, ENC_ASCII|ENC_NA); offset += str_len; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "mailbox: %s", mailbox); proto_item_set_len(item, offset - origin_offset); diff --git a/epan/dissectors/pidl/mapi/response.cnf.c b/epan/dissectors/pidl/mapi/response.cnf.c index a40743ad17..30b4f59eb9 100644 --- a/epan/dissectors/pidl/mapi/response.cnf.c +++ b/epan/dissectors/pidl/mapi/response.cnf.c @@ -33,6 +33,16 @@ MANUAL mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps #ETT_FIELD ett_mapi_OpenMsgStore_repl #MANUAL mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenMsgStore +# +# Misc. filters +# +HF_FIELD hf_mapi_MAPI_OPNUM "Opnum" "mapi.EcDoRpc_MAPI_REPL.opnum" FT_UINT8 BASE_HEX VALS(mapi_MAPI_OPNUM_vals) 0 NULL HFILL +HF_RENAME hf_mapi_EcDoRpc_MAPI_REPL_opnum hf_mapi_MAPI_OPNUM +HF_FIELD hf_mapi_EcDoRpc_handle_index "Handle index" "mapi.EcDoRpc.handle_index" FT_UINT8 BASE_DEC NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_subcontext_size "Subcontext size" "mapi.EcDoRpc.subcontext_size" FT_UINT32 BASE_HEX NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_unknown1 "Unknown1" "mapi.EcDoRpc.unknown1" FT_UINT16 BASE_HEX NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_layout "Layout" "mapi.EcDoRpc.layout" FT_UINT8 BASE_DEC NULL 0 NULL HFILL +HF_FIELD hf_mapi_EcDoRpc_prop_count "Prop count" "mapi.EcDoRpc.prop_count" FT_UINT16 BASE_HEX NULL 0 NULL HFILL CODE START @@ -43,7 +53,6 @@ mapi_dissect_struct_EcDoRpc_MAPI_REPL(tvbuff_t *tvb _U_, int offset _U_, packet_ proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - int cur_offset; guint8 opnum; guint8 handle_idx; guint32 retval; @@ -51,27 +60,24 @@ mapi_dissect_struct_EcDoRpc_MAPI_REPL(tvbuff_t *tvb _U_, int offset _U_, packet_ old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_EcDoRpc_MAPI_REPL); } - cur_offset = offset; opnum = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_mapi_MAPI_OPNUM, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "opnum: %s", val_to_str(opnum, mapi_MAPI_OPNUM_vals, "Unknown MAPI operation: 0x%02x")); col_append_fstr(pinfo->cinfo, COL_INFO, " + %s", val_to_str(opnum, mapi_MAPI_OPNUM_vals, "Unknown MAPI operation: 0x%02x")); if (opnum != op_MAPI_Notify) { - cur_offset = offset; handle_idx = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_handle_index, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "handle index: %d", handle_idx); - cur_offset = offset; retval = tvb_get_letohl(tvb, offset); + proto_tree_add_item(tree, hf_mapi_MAPISTATUS_status, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "MAPISTATUS: %s", val_to_str(retval, mapi_MAPISTATUS_vals, "Unknown MAPISTATUS error 0x%08x")); if (retval == MAPI_E_SUCCESS) { switch(opnum) { @@ -92,8 +98,8 @@ mapi_dissect_struct_EcDoRpc_MAPI_REPL(tvbuff_t *tvb _U_, int offset _U_, packet_ } } } else { - /* we don't decode notifications within the dissector yet */ - offset += param - 1; + /* we don't decode notifications within the dissector yet */ + offset += param - 1; } proto_item_set_len(item, offset - old_offset); @@ -121,11 +127,10 @@ mapi_dissect_element_EcDoRpc_response_(tvbuff_t *tvb _U_, int offset _U_, packet gint reported_len; guint16 pdu_len; guint32 i; - proto_item *it = NULL; proto_tree *tr = NULL; - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_mapi_EcDoRpc_mapi_response, &size); - proto_tree_add_text(tree, tvb, start_offset, offset - start_offset + size, "Subcontext size: 0x%x", size); + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_mapi_response, &size); + proto_tree_add_uint(tree, hf_mapi_EcDoRpc_subcontext_size, tvb, start_offset, offset - start_offset + size, size); reported_len = tvb_reported_length_remaining(tvb, offset); @@ -148,15 +153,14 @@ mapi_dissect_element_EcDoRpc_response_(tvbuff_t *tvb _U_, int offset _U_, packet tvb_set_free_cb(decrypted_tvb, g_free); add_new_data_source(pinfo, decrypted_tvb, "Decrypted MAPI"); - it = proto_tree_add_text(tree, decrypted_tvb, 0, size, "Decrypted MAPI PDU"); - tr = proto_item_add_subtree(it, ett_mapi_mapi_response); + tr = proto_tree_add_subtree(tree, decrypted_tvb, 0, size, ett_mapi_mapi_response, NULL, "Decrypted MAPI PDU"); pdu_len = tvb_get_letohs(decrypted_tvb, 0); proto_tree_add_uint(tr, hf_mapi_pdu_len, decrypted_tvb, 0, 2, pdu_len); proto_tree_add_item(tr, hf_mapi_decrypted_data, decrypted_tvb, 2, pdu_len - 2, ENC_NA); /* Analyze contents */ - offset = mapi_dissect_element_EcDoRpc_response__(decrypted_tvb, 0, pinfo, tr, drep); + offset = mapi_dissect_element_EcDoRpc_response__(decrypted_tvb, 0, pinfo, tr, di, drep); /* Analyze mapi handles */ offset = mapi_dissect_element_request_handles_cnf(decrypted_tvb, offset, pinfo, tr, di, drep); @@ -175,7 +179,7 @@ mapi_dissect_element_EcDoRpc_response__(tvbuff_t *tvb _U_, int offset _U_, packe offset += 2; while (offset < length) { - offset = mapi_dissect_struct_EcDoRpc_MAPI_REPL(subtvb, offset, pinfo, tree, drep, hf_mapi_mapi_response_mapi_repl, length - offset); + offset = mapi_dissect_struct_EcDoRpc_MAPI_REPL(subtvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_response_mapi_repl, length - offset); } return offset; @@ -184,7 +188,7 @@ mapi_dissect_element_EcDoRpc_response__(tvbuff_t *tvb _U_, int offset _U_, packe /*************************/ /* EcDoRpc Function 0x2 */ static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_) +mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { proto_item *item = NULL; proto_tree *tree = NULL; @@ -201,9 +205,8 @@ mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvbuff_t *tvb _U_, int o } old_offset = offset; - unknown = tvb_get_letohs(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_unknown1, tvb, old_offset, 2, ENC_LITTLE_ENDIAN); offset += 2; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "unknown: 0x%04x", unknown); proto_item_set_len(item, offset - origin_offset); @@ -213,11 +216,10 @@ mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvbuff_t *tvb _U_, int o /*************************/ /* EcDoRpc Function 0x7 */ static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_) +mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { proto_item *item = NULL; proto_tree *tree = NULL; - int old_offset; int origin_offset; /**** Function parameters ****/ guint8 layout; @@ -230,15 +232,12 @@ mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvbuff_t *tvb _U_, int off tree = proto_item_add_subtree(item, ett_mapi_GetProps_repl); } - old_offset = offset; - layout = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_layout, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "layout: %d", layout); - old_offset = offset; length = tvb_reported_length_remaining(tvb, offset); + proto_tree_add_uint(tree, hf_mapi_EcDoRpc_prop_count, tvb, offset, 0, length); offset += length; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "prop_count: 0x%x", length); proto_item_set_len(item, offset - origin_offset); @@ -248,7 +247,7 @@ mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvbuff_t *tvb _U_, int off /*************************/ /* EcDoRpc Function 0xFE */ /* static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenMsgStore(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo, proto_tree *parent_tree _U_, guint8 *drep _U_) +mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenMsgStore(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { proto_item *item = NULL; proto_tree *tree = NULL; |