From e976f68ff509a27b97afa4f0cfffed4da93f0a26 Mon Sep 17 00:00:00 2001 From: Alexis La Goutte Date: Sun, 28 Sep 2014 19:58:16 +0200 Subject: PIDL (DCERPC mapi): enhance dissector Correctly regenerate mapi dissector (launch via make in pidl/mapi folder) * Fix -Wunused-variable (fix in request/response.cnf files) * Fix trailing whitespace Not yet ready to remove from DIRTY list (there is always some warning about unused tree) Change-Id: I9759202e320e90f0cb91db5c7dd9650ff62bbadd Reviewed-on: https://code.wireshark.org/review/4347 Reviewed-by: Anders Broman --- epan/dissectors/packet-dcerpc-mapi.c | 1625 +++++++++++------------------- epan/dissectors/packet-dcerpc-mapi.h | 11 +- epan/dissectors/pidl/mapi/request.cnf.c | 11 +- epan/dissectors/pidl/mapi/response.cnf.c | 5 - 4 files changed, 573 insertions(+), 1079 deletions(-) (limited to 'epan') diff --git a/epan/dissectors/packet-dcerpc-mapi.c b/epan/dissectors/packet-dcerpc-mapi.c index a4b220f91b..b6de1baeee 100644 --- a/epan/dissectors/packet-dcerpc-mapi.c +++ b/epan/dissectors/packet-dcerpc-mapi.c @@ -1,6 +1,6 @@ /* DO NOT EDIT This file was automatically generated by Pidl - from mapi/mapi.idl and mapi/mapi.cnf. + from mapi.idl and mapi.cnf. Pidl is a perl based IDL compiler for DCE/RPC idl files. It is maintained by the Samba team, not the Wireshark team. @@ -29,6 +29,15 @@ void proto_register_dcerpc_mapi(void); void proto_reg_handoff_dcerpc_mapi(void); /* Ett declarations */ +static gint ett_mapi_mapi_request = -1; +static gint ett_mapi_EcDoRpc_MAPI_REQ = -1; +static gint ett_mapi_OpenFolder_req = -1; +static gint ett_mapi_GetProps_req = -1; +static gint ett_mapi_OpenMsgStore_req = -1; +static gint ett_mapi_mapi_response = -1; +static gint ett_mapi_EcDoRpc_MAPI_REPL = -1; +static gint ett_mapi_OpenFolder_repl = -1; +static gint ett_mapi_GetProps_repl = -1; static gint ett_dcerpc_mapi = -1; static gint ett_mapi_DATA_BLOB = -1; static gint ett_mapi_input_locale = -1; @@ -39,8 +48,6 @@ static gint ett_mapi_SPropValue = -1; static gint ett_mapi_SRow = -1; static gint ett_mapi_Release_req = -1; static gint ett_mapi_Release_repl = -1; -static gint ett_mapi_OpenFolder_req = -1; -static gint ett_mapi_OpenFolder_repl = -1; static gint ett_mapi_OpenMessage_req = -1; static gint ett_mapi_RecipExchange = -1; static gint ett_mapi_RecipSMTP = -1; @@ -48,16 +55,9 @@ static gint ett_mapi_recipient_type = -1; static gint ett_mapi_recipient_displayname_7bit = -1; static gint ett_mapi_recipients_headers = -1; static gint ett_mapi_OpenMessage_recipients = -1; -static gint ett_mapi_GetProps_req = -1; -static gint ett_mapi_GetProps_repl = -1; static gint ett_mapi_ulEventType = -1; -static gint ett_mapi_OpenMsgStore_req = -1; static gint ett_mapi_EcDoRpc_MAPI_REQ_UNION = -1; static gint ett_mapi_EcDoRpc_MAPI_REPL_UNION = -1; -static gint ett_mapi_EcDoRpc_MAPI_REQ = -1; -static gint ett_mapi_EcDoRpc_MAPI_REPL = -1; -static gint ett_mapi_mapi_request = -1; -static gint ett_mapi_mapi_response = -1; /* Header field declarations */ @@ -70,17 +70,14 @@ static gint hf_mapi_EcDoConnect_name = -1; static gint hf_mapi_SPropValue_CTR_lpszW = -1; static gint hf_mapi_EcDoRpc_offset = -1; static gint hf_mapi_EcDoConnect_alloc_space = -1; -static gint hf_mapi_EcDoRpc_MAPI_REQ_u = -1; static gint hf_mapi_ulEventType_fnevCriticalError = -1; static gint hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenFolder = -1; static gint hf_mapi_SRow_ulRowFlags = -1; static gint hf_mapi_EcRRegisterPushNotification_notifkey = -1; static gint hf_mapi_EcRUnregisterPushNotification_unknown = -1; -static gint hf_mapi_mapi_response_mapi_len = -1; -static gint hf_mapi_OpenMsgStore_req_codepage = -1; -static gint hf_mapi_mapi_request_mapi_req = -1; +static gint hf_mapi_EcDoRpc_codepage = -1; static gint hf_mapi_recipients_headers_username = -1; -static gint hf_mapi_GetProps_repl_layout = -1; +static gint hf_mapi_mapi_request_mapi_req = -1; static gint hf_mapi_EcRRegisterPushNotification_retval = -1; static gint hf_mapi_ulEventType_fnevObjectDeleted = -1; static gint hf_mapi_SPropValue_CTR_lpszA = -1; @@ -89,23 +86,20 @@ static gint hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_GetProps = -1; static gint hf_mapi_recipient_type_SMTP = -1; static gint hf_mapi_EcRRegisterPushNotification_sockaddr = -1; static gint hf_mapi_LPSTR_lppszA = -1; -static gint hf_mapi_mapi_response_handles = -1; static gint hf_mapi_EcDoRpc_max_data = -1; static gint hf_mapi_OpenMessage_recipients_codepage = -1; static gint hf_mapi_ulEventType_fnevObjectCopied = -1; static gint hf_mapi_EcRRegisterPushNotification_unknown2 = -1; static gint hf_mapi_recipients_headers_prop_count = -1; -static gint hf_mapi_OpenMsgStore_req_row = -1; static gint hf_mapi_recipients_headers_bitmask = -1; static gint hf_mapi_FILETIME_dwLowDateTime = -1; -static gint hf_mapi_OpenMsgStore_req_mailbox = -1; +static gint hf_mapi_EcDoRpc_unknown3 = -1; static gint hf_mapi_MAPISTATUS_status = -1; static gint hf_mapi_recipient_type_EXCHANGE = -1; static gint hf_mapi_SPropValue_CTR_lpguid = -1; static gint hf_mapi_EcDoConnect_unknown2 = -1; static gint hf_mapi_ulEventType_fnevSearchComplete = -1; static gint hf_mapi_OpenMessage_recipients_recipients_headers_ = -1; -static gint hf_mapi_mapi_request_length = -1; static gint hf_mapi_ulEventType_fnevStatusObjectModified = -1; static gint hf_mapi_ulEventType_fnevObjectCreated = -1; static gint hf_mapi_OpenMessage_req_max_data = -1; @@ -114,53 +108,46 @@ static gint hf_mapi_EcDoConnect_input_locale = -1; static gint hf_mapi_RecipExchange_addr_type = -1; static gint hf_mapi_EcDoRpc_mapi_request = -1; static gint hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_Release = -1; -static gint hf_mapi_OpenMsgStore_req_mailbox_str_size = -1; +static gint hf_mapi_EcDoRpc_layout = -1; static gint hf_mapi_decrypted_data = -1; -static gint hf_mapi_EcDoRpc_MAPI_REPL_handle_idx = -1; -static gint hf_mapi_GetProps_req_unknown = -1; static gint hf_mapi_ulEventType_fnevNewMail = -1; +static gint hf_mapi_EcDoRpc_mapi_tag = -1; +static gint hf_mapi_EcDoRpc_mapi_flags = -1; static gint hf_mapi_SPropValue_CTR_b = -1; static gint hf_mapi_mapi_response_mapi_repl = -1; +static gint hf_mapi_EcDoRpc_prop_count = -1; static gint hf_mapi_recipients_headers_layout = -1; static gint hf_mapi_EcDoRpc_length = -1; static gint hf_mapi_RecipExchange_organization_length = -1; +static gint hf_mapi_EcDoRpc_unknown2 = -1; +static gint hf_mapi_EcDoRpc_handle_index = -1; static gint hf_mapi_OpenMessage_recipients_recipients_headers = -1; static gint hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_GetProps = -1; -static gint hf_mapi_EcDoRpc_MAPI_REPL_error_code = -1; -static gint hf_mapi_EcDoRpc_MAPI_REPL_opnum = -1; static gint hf_mapi_SPropValue_CTR_dbl = -1; static gint hf_mapi_OpenMessage_req_message_id = -1; -static gint hf_mapi_OpenFolder_req_unknown = -1; static gint hf_mapi_EcDoRpc_size = -1; static gint hf_mapi_EcDoConnect_session_nb = -1; static gint hf_mapi_MAPI_handle = -1; static gint hf_mapi_pdu_len = -1; -static gint hf_mapi_mapi_request_mapi_len = -1; static gint hf_mapi_SPropValue_CTR_ft = -1; static gint hf_mapi_SPropValue_ulPropTag = -1; static gint hf_mapi_OpenMessage_recipients_RecipClass = -1; static gint hf_mapi_EcRRegisterPushNotification_ulEventMask = -1; static gint hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenFolder = -1; -static gint hf_mapi_OpenMsgStore_req_padding = -1; +static gint hf_mapi_EcDoRpc_unknown1 = -1; static gint hf_mapi_FILETIME_dwHighDateTime = -1; static gint hf_mapi_OpenMessage_req_message_permissions = -1; -static gint hf_mapi_mapi_request_handles = -1; -static gint hf_mapi_OpenFolder_req_handle_idx = -1; +static gint hf_mapi_EcDoRpc_padding = -1; static gint hf_mapi_ulEventType_fnevReservedForMapi = -1; static gint hf_mapi_SPropValue_CTR_l = -1; -static gint hf_mapi_GetProps_req_prop_count = -1; -static gint hf_mapi_GetProps_repl_prop_data = -1; static gint hf_mapi_EcDoConnect_user = -1; -static gint hf_mapi_EcDoRpc_MAPI_REPL_u = -1; static gint hf_mapi_EcDoConnect_unknown4 = -1; -static gint hf_mapi_OpenFolder_req_folder_id = -1; +static gint hf_mapi_EcDoRpc_folder_id = -1; static gint hf_mapi_MAPI_OPNUM = -1; static gint hf_mapi_EcDoConnect_code_page = -1; static gint hf_mapi_handle = -1; static gint hf_mapi_input_locale_method = -1; static gint hf_mapi_input_locale_language = -1; -static gint hf_mapi_mapi_response_length = -1; -static gint hf_mapi_GetProps_req_properties = -1; static gint hf_mapi_EcDoRpc_mapi_response = -1; static gint hf_mapi_EcDoConnect_store_version = -1; static gint hf_mapi_ulEventType_fnevObjectMoved = -1; @@ -169,14 +156,15 @@ static gint hf_mapi_ulEventType_fnevTableModified = -1; static gint hf_mapi_recipient_type = -1; static gint hf_mapi_ulEventType_fnevExtended = -1; static gint hf_mapi_recipients_headers_prop_values = -1; -static gint hf_mapi_EcDoRpc_MAPI_REQ_mapi_flags = -1; -static gint hf_mapi_OpenFolder_repl_unknown = -1; +static gint hf_mapi_EcDoRpc_subcontext_size = -1; static gint hf_mapi_opnum = -1; static gint hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_Release = -1; +static gint hf_mapi_EcDoRpc_row = -1; static gint hf_mapi_property_types = -1; -static gint hf_mapi_EcDoRpc_MAPI_REQ_handle_idx = -1; +static gint hf_mapi_EcDoRpc_str_length = -1; static gint hf_mapi_recipient_displayname_7bit_lpszA = -1; static gint hf_mapi_EcRRegisterPushNotification_sockaddr_len = -1; +static gint hf_mapi_EcDoRpc_mailbox = -1; static gint hf_mapi_EcRRegisterPushNotification_notif_len = -1; static gint hf_mapi_EcDoConnect_unknown3 = -1; static gint hf_mapi_OpenMessage_req_folder_handle_idx = -1; @@ -3822,10 +3810,6 @@ const value_string mapi_ulRowFlags_vals[] = { { 0, NULL } }; static int mapi_dissect_element_SRow_ulRowFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_OpenFolder_req_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_OpenFolder_req_folder_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_OpenFolder_req_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_OpenFolder_repl_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_OpenMessage_req_folder_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_OpenMessage_req_max_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_OpenMessage_req_folder_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); @@ -3876,12 +3860,6 @@ static int mapi_dissect_element_OpenMessage_recipients_RecipClass(tvbuff_t *tvb static int mapi_dissect_element_OpenMessage_recipients_codepage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_OpenMessage_recipients_recipients_headers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_OpenMessage_recipients_recipients_headers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_GetProps_req_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_GetProps_req_prop_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_GetProps_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_GetProps_req_properties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_GetProps_repl_layout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_GetProps_repl_prop_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static const true_false_string ulEventType_fnevCriticalError_tfs = { "fnevCriticalError is SET", "fnevCriticalError is NOT SET", @@ -3930,12 +3908,6 @@ static const true_false_string ulEventType_fnevExtended_tfs = { "fnevExtended is SET", "fnevExtended is NOT SET", }; -static int mapi_dissect_element_OpenMsgStore_req_codepage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_OpenMsgStore_req_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_OpenMsgStore_req_row(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_OpenMsgStore_req_mailbox_str_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_OpenMsgStore_req_mailbox(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_OpenMsgStore_req_mailbox_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_Release(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); @@ -3943,26 +3915,6 @@ static int mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvbuff_t *tv static int mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_EcDoRpc_MAPI_REQ_opnum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum); -static int mapi_dissect_element_EcDoRpc_MAPI_REQ_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_EcDoRpc_MAPI_REQ_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_EcDoRpc_MAPI_REQ_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum); -static int mapi_dissect_element_EcDoRpc_MAPI_REPL_opnum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum); -static int mapi_dissect_element_EcDoRpc_MAPI_REPL_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_EcDoRpc_MAPI_REPL_error_code(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_EcDoRpc_MAPI_REPL_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum); -static int mapi_dissect_element_request_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_request_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_request_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_request_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_request_handles(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_request_handles_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_response_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_response_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_response_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_response_repl_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_response_handles(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_response_handles_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoConnect_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoConnect_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoConnect_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); @@ -4043,6 +3995,365 @@ static int mapi_dissect_element_request_handles_cnf(tvbuff_t *tvb _U_, int offse } return offset; } +int +mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + guint8 opnum; + old_offset = offset; + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_mapi_EcDoRpc_MAPI_REQ); + } + opnum = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_mapi_MAPI_OPNUM, tvb, offset, 1, ENC_NA); + offset += 1; + col_append_fstr(pinfo->cinfo, COL_INFO, " + %s", val_to_str(opnum, mapi_MAPI_OPNUM_vals, "Unknown MAPI operation")); + proto_tree_add_item(tree, hf_mapi_EcDoRpc_mapi_flags, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(tree, hf_mapi_EcDoRpc_handle_index, tvb, offset, 1, ENC_NA); + offset += 1; + switch(opnum) { + case op_MAPI_Release: + 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); + break; + case op_MAPI_GetProps: + offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvb, offset, pinfo, tree, di, drep); + break; + case op_MAPI_OpenMsgStore: + offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvb, offset, pinfo, tree, di, drep); + break; + default: + offset += param - 3; + } + proto_item_set_len(item, offset-old_offset); + return offset; +} +static int +mapi_dissect_element_EcDoRpc_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_element_EcDoRpc_request_(tvb, offset, pinfo, tree, di, drep); + return offset; +} +static int +mapi_dissect_element_EcDoRpc_request_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + guint32 size; + int start_offset = offset; + guint8 *decrypted_data; + tvbuff_t *decrypted_tvb; + const guint8 *ptr; + gint reported_len; + guint16 pdu_len; + guint32 i; + proto_tree *tr = NULL; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_mapi_request, &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); + if ((guint32) reported_len > size) { + reported_len = size; + } + if (size > (guint32) reported_len) { + size = reported_len; + } + ptr = tvb_get_ptr(tvb, offset, size); + decrypted_data = (guint8 *)g_malloc(size); + for (i = 0; i < size; i++) { + decrypted_data[i] = ptr[i] ^ 0xA5; + } + 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"); + 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); + proto_tree_add_item(tr, hf_mapi_decrypted_data, decrypted_tvb, 2, pdu_len - 2, ENC_NA); + /* analyze contents */ + offset = mapi_dissect_element_EcDoRpc_request__(decrypted_tvb, 0, pinfo, tr, di, drep); + /* analyze mapi handles */ + offset = mapi_dissect_element_request_handles_cnf(decrypted_tvb, offset, pinfo, tr, di, drep); + /* append ptr size (4) */ + return start_offset + offset + 4; +} +/* + * Analyze mapi_request real contents + */ +static int mapi_dissect_element_EcDoRpc_request__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + guint16 length; + length = tvb_get_letohs(tvb, offset); + offset += 2; + while (offset < length) { + offset = mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_request_mapi_req, length - offset); + } + return offset; +} +int +mapi_dissect_struct_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_mapi_mapi_request); + } + offset = mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_request_mapi_req, 0); + return offset; +} +/*************************/ +/* 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_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int origin_offset; + origin_offset = offset; + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenFolder, tvb, offset, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_mapi_OpenFolder_req); + } + proto_tree_add_item(tree, hf_mapi_EcDoRpc_handle_index, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(tree, hf_mapi_EcDoRpc_folder_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); + offset += 8; + proto_tree_add_item(tree, hf_mapi_EcDoRpc_unknown2, tvb, offset, 1, ENC_NA); + offset += 1; + 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_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int origin_offset; + guint16 i; + /**** Function parameters ****/ + guint16 prop_count; + guint32 mapitag; + origin_offset = offset; + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_GetProps, tvb, offset, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_mapi_GetProps_req); + } + proto_tree_add_item(tree, hf_mapi_EcDoRpc_unknown3, tvb, offset, 4, ENC_LITTLE_ENDIAN); + offset += 4; + prop_count = tvb_get_letohs(tvb, offset); + proto_tree_add_uint(tree, hf_mapi_EcDoRpc_prop_count, tvb, offset, 2, prop_count); + offset += 2; + for (i = 0; i < prop_count; i++) { + 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); + return offset; +} +/*************************/ +/* 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_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int origin_offset; + /**** Function parameters ****/ + guint16 str_len; + origin_offset = offset; + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenMsgStore, tvb, offset, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_mapi_OpenMsgStore_req); + } + proto_tree_add_item(tree, hf_mapi_EcDoRpc_codepage, tvb, offset, 4, ENC_LITTLE_ENDIAN); + offset += 4; + proto_tree_add_item(tree, hf_mapi_EcDoRpc_padding, tvb, offset, 4, ENC_LITTLE_ENDIAN); + offset += 4; + proto_tree_add_item(tree, hf_mapi_EcDoRpc_row, tvb, offset, 1, ENC_NA); + offset += 1; + 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_item(tree, hf_mapi_EcDoRpc_mailbox, tvb, offset, str_len, ENC_ASCII|ENC_NA); + offset += str_len; + proto_item_set_len(item, offset - origin_offset); + return offset; +} +static int +mapi_dissect_struct_EcDoRpc_MAPI_REPL(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + guint8 opnum; + guint32 retval; + old_offset = offset; + if (parent_tree) { + 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); + } + opnum = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_mapi_MAPI_OPNUM, tvb, offset, 1, ENC_NA); + offset += 1; + 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) { + proto_tree_add_item(tree, hf_mapi_EcDoRpc_handle_index, tvb, offset, 1, ENC_NA); + offset += 1; + retval = tvb_get_letohl(tvb, offset); + proto_tree_add_item(tree, hf_mapi_MAPISTATUS_status, tvb, offset, 4, ENC_LITTLE_ENDIAN); + offset += 4; + if (retval == MAPI_E_SUCCESS) { + switch(opnum) { + case op_MAPI_Release: + offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvb, offset, pinfo, tree, di, drep); + break; + case op_MAPI_OpenFolder: + offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvb, offset, pinfo, tree, di, drep); + break; + case op_MAPI_GetProps: + offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvb, offset, pinfo, tree, di, drep); + break; +/* case op_MAPI_OpenMsgStore: */ +/* offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenMsgStore(tvb, offset, pinfo, tree, di, drep); */ +/* break; */ + default: + offset += param - 6; + } + } + } else { + /* we don't decode notifications within the dissector yet */ + offset += param - 1; + } + proto_item_set_len(item, offset - old_offset); + return offset; +} +static int +mapi_dissect_element_EcDoRpc_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_element_EcDoRpc_response_(tvb, offset, pinfo, tree, di, drep); + return offset; +} +static int +mapi_dissect_element_EcDoRpc_response_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + guint32 size; + int start_offset = offset; + guint8 *decrypted_data; + tvbuff_t *decrypted_tvb; + const guint8 *ptr; + gint reported_len; + guint16 pdu_len; + guint32 i; + proto_tree *tr = NULL; + 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); + if ((guint32) reported_len > size) { + reported_len = size; + } + if (size > (guint32) reported_len) { + size = reported_len; + } + ptr = tvb_get_ptr(tvb, offset, size); + decrypted_data = (guint8 *)g_malloc(size); + for (i = 0; i < size; i++) { + decrypted_data[i] = ptr[i] ^ 0xA5; + } + 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"); + 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, di, drep); + /* Analyze mapi handles */ + offset = mapi_dissect_element_request_handles_cnf(decrypted_tvb, offset, pinfo, tr, di, drep); + return start_offset + offset + 4; +} +static int +mapi_dissect_element_EcDoRpc_response__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + guint16 length; + tvbuff_t *subtvb; + length = tvb_get_letohs(tvb, offset); + subtvb = tvb_new_subset(tvb, offset, length, length); + offset += 2; + while (offset < length) { + offset = mapi_dissect_struct_EcDoRpc_MAPI_REPL(subtvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_response_mapi_repl, length - offset); + } + return offset; +} +/*************************/ +/* 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_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + int origin_offset; + origin_offset = offset; + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenFolder, tvb, offset, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_mapi_OpenFolder_repl); + } + old_offset = offset; + proto_tree_add_item(tree, hf_mapi_EcDoRpc_unknown1, tvb, old_offset, 2, ENC_LITTLE_ENDIAN); + offset += 2; + proto_item_set_len(item, offset - origin_offset); + return offset; +} +/*************************/ +/* 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_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int origin_offset; + /**** Function parameters ****/ + guint16 length; + origin_offset = offset; + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_GetProps, tvb, offset, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_mapi_GetProps_repl); + } + proto_tree_add_item(tree, hf_mapi_EcDoRpc_layout, tvb, offset, 1, ENC_NA); + offset += 1; + length = tvb_reported_length_remaining(tvb, offset); + proto_tree_add_uint(tree, hf_mapi_EcDoRpc_prop_count, tvb, offset, 0, length); + offset += length; + proto_item_set_len(item, offset - origin_offset); + return offset; +} +/*************************/ +/* 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_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + int origin_offset; + origin_offset = offset; + old_offset = offset; + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenMsgStore, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_mapi_OpenMsgStore_repl); + } + offset = mapi_dissect_element_OpenMsgStore_repl_PR_OBJECT_TYPE(tvb, offset, pinfo, tree, di, drep); + proto_item_set_len(item, offset - origin_offset); + return offset; + }*/ /* IDL: enum { */ @@ -8301,103 +8612,11 @@ mapi_dissect_struct_Release_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info /* IDL: uint8 unknown; */ /* IDL: } */ -static int -mapi_dissect_element_OpenFolder_req_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenFolder_req_handle_idx, 0); - - return offset; -} - -static int -mapi_dissect_element_OpenFolder_req_folder_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_mapi_OpenFolder_req_folder_id); - - return offset; -} - -static int -mapi_dissect_element_OpenFolder_req_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenFolder_req_unknown, 0); - - return offset; -} - -int -mapi_dissect_struct_OpenFolder_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - old_offset = offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_OpenFolder_req); - } - - offset = mapi_dissect_element_OpenFolder_req_handle_idx(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_OpenFolder_req_folder_id(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_OpenFolder_req_unknown(tvb, offset, pinfo, tree, di, drep); - - - proto_item_set_len(item, offset-old_offset); - - - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; - } - - return offset; -} - /* IDL: struct { */ /* IDL: uint16 unknown; */ /* IDL: } */ -static int -mapi_dissect_element_OpenFolder_repl_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenFolder_repl_unknown, 0); - - return offset; -} - -int -mapi_dissect_struct_OpenFolder_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - old_offset = offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_OpenFolder_repl); - } - - offset = mapi_dissect_element_OpenFolder_repl_unknown(tvb, offset, pinfo, tree, di, drep); - - - proto_item_set_len(item, offset-old_offset); - - - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_2_BYTES; - } - - return offset; -} - /* IDL: struct { */ /* IDL: uint8 folder_handle_idx; */ @@ -8951,149 +9170,40 @@ mapi_dissect_struct_OpenMessage_recipients(tvbuff_t *tvb _U_, int offset _U_, pa /* IDL: MAPITAGS properties[prop_count]; */ /* IDL: } */ -static int -mapi_dissect_element_GetProps_req_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetProps_req_unknown, 0); - - return offset; -} - -static int -mapi_dissect_element_GetProps_req_prop_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetProps_req_prop_count, 0); - - return offset; -} - -static int -mapi_dissect_element_GetProps_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - return offset; -} +/* IDL: struct { */ +/* IDL: uint8 layout; */ +/* IDL: [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB prop_data; */ +/* IDL: } */ -static int -mapi_dissect_element_GetProps_req_properties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_enum_MAPITAGS(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetProps_req_properties, 0); - return offset; -} +/* IDL: bitmap { */ +/* IDL: fnevCriticalError = 0x00000001 , */ +/* IDL: fnevNewMail = 0x00000002 , */ +/* IDL: fnevObjectCreated = 0x00000004 , */ +/* IDL: fnevObjectDeleted = 0x00000008 , */ +/* IDL: fnevObjectModified = 0x00000010 , */ +/* IDL: fnevObjectMoved = 0x00000020 , */ +/* IDL: fnevObjectCopied = 0x00000040 , */ +/* IDL: fnevSearchComplete = 0x00000080 , */ +/* IDL: fnevTableModified = 0x00000100 , */ +/* IDL: fnevStatusObjectModified = 0x00000200 , */ +/* IDL: fnevReservedForMapi = 0x40000000 , */ +/* IDL: fnevExtended = 0x80000000 , */ +/* IDL: } */ int -mapi_dissect_struct_GetProps_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) +mapi_dissect_bitmap_ulEventType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) { proto_item *item = NULL; proto_tree *tree = NULL; - int old_offset; - - old_offset = offset; + guint16 flags; + ALIGN_TO_2_BYTES; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_GetProps_req); - } - - offset = mapi_dissect_element_GetProps_req_unknown(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_GetProps_req_prop_count(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_GetProps_req_properties(tvb, offset, pinfo, tree, di, drep); - - - proto_item_set_len(item, offset-old_offset); - - - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - - return offset; -} - - -/* IDL: struct { */ -/* IDL: uint8 layout; */ -/* IDL: [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB prop_data; */ -/* IDL: } */ - -static int -mapi_dissect_element_GetProps_repl_layout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetProps_repl_layout, 0); - - return offset; -} - -static int -mapi_dissect_element_GetProps_repl_prop_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetProps_repl_prop_data, 1); - - return offset; -} - -int -mapi_dissect_struct_GetProps_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - old_offset = offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_GetProps_repl); - } - - offset = mapi_dissect_element_GetProps_repl_layout(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_GetProps_repl_prop_data(tvb, offset, pinfo, tree, di, drep); - - - proto_item_set_len(item, offset-old_offset); - - - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - - return offset; -} - - -/* IDL: bitmap { */ -/* IDL: fnevCriticalError = 0x00000001 , */ -/* IDL: fnevNewMail = 0x00000002 , */ -/* IDL: fnevObjectCreated = 0x00000004 , */ -/* IDL: fnevObjectDeleted = 0x00000008 , */ -/* IDL: fnevObjectModified = 0x00000010 , */ -/* IDL: fnevObjectMoved = 0x00000020 , */ -/* IDL: fnevObjectCopied = 0x00000040 , */ -/* IDL: fnevSearchComplete = 0x00000080 , */ -/* IDL: fnevTableModified = 0x00000100 , */ -/* IDL: fnevStatusObjectModified = 0x00000200 , */ -/* IDL: fnevReservedForMapi = 0x40000000 , */ -/* IDL: fnevExtended = 0x80000000 , */ -/* IDL: } */ - -int -mapi_dissect_bitmap_ulEventType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - - guint16 flags; - ALIGN_TO_2_BYTES; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, 2, DREP_ENC_INTEGER(drep)); - tree = proto_item_add_subtree(item,ett_mapi_ulEventType); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, 2, DREP_ENC_INTEGER(drep)); + tree = proto_item_add_subtree(item,ett_mapi_ulEventType); } offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, -1, &flags); @@ -9113,573 +9223,93 @@ mapi_dissect_bitmap_ulEventType(tvbuff_t *tvb _U_, int offset _U_, packet_info * proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevNewMail, tvb, offset-2, 2, flags); if (flags&( 0x00000002 )){ proto_item_append_text(item, "fnevNewMail"); - if (flags & (~( 0x00000002 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000002 )); - - proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevObjectCreated, tvb, offset-2, 2, flags); - if (flags&( 0x00000004 )){ - proto_item_append_text(item, "fnevObjectCreated"); - if (flags & (~( 0x00000004 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000004 )); - - proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevObjectDeleted, tvb, offset-2, 2, flags); - if (flags&( 0x00000008 )){ - proto_item_append_text(item, "fnevObjectDeleted"); - if (flags & (~( 0x00000008 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000008 )); - - proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevObjectModified, tvb, offset-2, 2, flags); - if (flags&( 0x00000010 )){ - proto_item_append_text(item, "fnevObjectModified"); - if (flags & (~( 0x00000010 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000010 )); - - proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevObjectMoved, tvb, offset-2, 2, flags); - if (flags&( 0x00000020 )){ - proto_item_append_text(item, "fnevObjectMoved"); - if (flags & (~( 0x00000020 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000020 )); - - proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevObjectCopied, tvb, offset-2, 2, flags); - if (flags&( 0x00000040 )){ - proto_item_append_text(item, "fnevObjectCopied"); - if (flags & (~( 0x00000040 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000040 )); - - proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevSearchComplete, tvb, offset-2, 2, flags); - if (flags&( 0x00000080 )){ - proto_item_append_text(item, "fnevSearchComplete"); - if (flags & (~( 0x00000080 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000080 )); - - proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevTableModified, tvb, offset-2, 2, flags); - if (flags&( 0x00000100 )){ - proto_item_append_text(item, "fnevTableModified"); - if (flags & (~( 0x00000100 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000100 )); - - proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevStatusObjectModified, tvb, offset-2, 2, flags); - if (flags&( 0x00000200 )){ - proto_item_append_text(item, "fnevStatusObjectModified"); - if (flags & (~( 0x00000200 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000200 )); - - proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevReservedForMapi, tvb, offset-2, 2, flags); - if (flags&( 0x40000000 )){ - proto_item_append_text(item, "fnevReservedForMapi"); - if (flags & (~( 0x40000000 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x40000000 )); - - proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevExtended, tvb, offset-2, 2, flags); - if (flags&( 0x80000000 )){ - proto_item_append_text(item, "fnevExtended"); - if (flags & (~( 0x80000000 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x80000000 )); - - if (flags) { - proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); - } - - return offset; -} - - -/* IDL: struct { */ -/* IDL: uint32 codepage; */ -/* IDL: uint32 padding; */ -/* IDL: uint8 row; */ -/* IDL: uint16 mailbox_str_size; */ -/* IDL: [unique(1)] [charset(DOS)] uint8 *mailbox; */ -/* IDL: } */ - -static int -mapi_dissect_element_OpenMsgStore_req_codepage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenMsgStore_req_codepage, 0); - - return offset; -} - -static int -mapi_dissect_element_OpenMsgStore_req_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenMsgStore_req_padding, 0); - - return offset; -} - -static int -mapi_dissect_element_OpenMsgStore_req_row(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenMsgStore_req_row, 0); - - return offset; -} - -static int -mapi_dissect_element_OpenMsgStore_req_mailbox_str_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenMsgStore_req_mailbox_str_size, 0); - - return offset; -} - -static int -mapi_dissect_element_OpenMsgStore_req_mailbox(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_OpenMsgStore_req_mailbox_, NDR_POINTER_UNIQUE, "Pointer to Mailbox (uint8)",hf_mapi_OpenMsgStore_req_mailbox); - - return offset; -} - -static int -mapi_dissect_element_OpenMsgStore_req_mailbox_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - char *data; - - offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_mapi_OpenMsgStore_req_mailbox, FALSE, &data); - proto_item_append_text(tree, ": %s", data); - - return offset; -} - -int -mapi_dissect_struct_OpenMsgStore_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - old_offset = offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_OpenMsgStore_req); - } - - offset = mapi_dissect_element_OpenMsgStore_req_codepage(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_OpenMsgStore_req_padding(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_OpenMsgStore_req_row(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_OpenMsgStore_req_mailbox_str_size(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_OpenMsgStore_req_mailbox(tvb, offset, pinfo, tree, di, drep); - - - proto_item_set_len(item, offset-old_offset); - - - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } - - return offset; -} - - -/* IDL: [switch_type(MAPI_OPNUM)] union { */ -/* IDL: [case(op_MAPI_Release)] [case(op_MAPI_Release)] Release_req mapi_Release; */ -/* IDL: [case(op_MAPI_OpenFolder)] [case(op_MAPI_OpenFolder)] OpenFolder_req mapi_OpenFolder; */ -/* IDL: [case(op_MAPI_GetProps)] [case(op_MAPI_GetProps)] GetProps_req mapi_GetProps; */ -/* IDL: [case(op_MAPI_OpenMsgStore)] [case(op_MAPI_OpenMsgStore)] OpenMsgStore_req mapi_OpenMsgStore; */ -/* IDL: } */ - -static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_Release(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_struct_Release_req(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_Release,0); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_struct_OpenFolder_req(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenFolder,0); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_struct_GetProps_req(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_GetProps,0); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_struct_OpenMsgStore_req(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenMsgStore,0); - - return offset; -} - -static int -mapi_dissect_EcDoRpc_MAPI_REQ_UNION(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - guint8 level; - - old_offset = offset; - if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_EcDoRpc_MAPI_REQ_UNION, &item, "EcDoRpc_MAPI_REQ_UNION"); - } - - offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_8_BYTES; - - switch(level) { - case op_MAPI_Release: - 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); - break; - - case op_MAPI_GetProps: - offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvb, offset, pinfo, tree, di, drep); - break; - - case op_MAPI_OpenMsgStore: - offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvb, offset, pinfo, tree, di, drep); - break; - } - proto_item_set_len(item, offset-old_offset); - - - return offset; -} - -/* IDL: [public(1)] [switch_type(MAPI_OPNUM)] union { */ -/* IDL: [case(op_MAPI_Release)] [case(op_MAPI_Release)] Release_repl mapi_Release; */ -/* IDL: [case(op_MAPI_OpenFolder)] [case(op_MAPI_OpenFolder)] OpenFolder_repl mapi_OpenFolder; */ -/* IDL: [case(op_MAPI_GetProps)] [case(op_MAPI_GetProps)] GetProps_repl mapi_GetProps; */ -/* IDL: } */ - -static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_struct_Release_repl(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_Release,0); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_struct_OpenFolder_repl(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenFolder,0); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_struct_GetProps_repl(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_GetProps,0); - - return offset; -} - -static int -mapi_dissect_EcDoRpc_MAPI_REPL_UNION(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - guint8 level; - - old_offset = offset; - if (parent_tree) { - tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_mapi_EcDoRpc_MAPI_REPL_UNION, &item, "EcDoRpc_MAPI_REPL_UNION"); - } - - offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, di, drep, hf_index, &level); - ALIGN_TO_4_BYTES; - - switch(level) { - case op_MAPI_Release: - offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvb, offset, pinfo, tree, di, drep); - break; - - case op_MAPI_OpenFolder: - offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvb, offset, pinfo, tree, di, drep); - break; - - case op_MAPI_GetProps: - offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvb, offset, pinfo, tree, di, drep); - break; - } - proto_item_set_len(item, offset-old_offset); - - - return offset; -} - -/* IDL: struct { */ -/* IDL: uint8 opnum; */ -/* IDL: uint8 mapi_flags; */ -/* IDL: uint8 handle_idx; */ -/* IDL: [switch_is(opnum)] EcDoRpc_MAPI_REQ_UNION u; */ -/* IDL: } */ - -static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_opnum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum) -{ - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_MAPI_OPNUM, *opnum); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REQ_mapi_flags, 0); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REQ_handle_idx, 0); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum) -{ - offset = mapi_dissect_EcDoRpc_MAPI_REQ_UNION(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REQ_u, *opnum); - - return offset; -} - -int -mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - guint8 opnum; - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - old_offset = offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_EcDoRpc_MAPI_REQ); - } - - offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_opnum(tvb, offset, pinfo, tree, di, drep, &opnum); - - offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_flags(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_handle_idx(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_u(tvb, offset, pinfo, tree, di, drep, &opnum); - - - proto_item_set_len(item, offset-old_offset); - - - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_8_BYTES; - } - - return offset; -} - - -/* IDL: struct { */ -/* IDL: uint8 opnum; */ -/* IDL: uint8 handle_idx; */ -/* IDL: MAPISTATUS error_code; */ -/* IDL: [switch_is(opnum)] EcDoRpc_MAPI_REPL_UNION u; */ -/* IDL: } */ - -static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_opnum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum) -{ - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REPL_opnum, *opnum); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REPL_handle_idx, 0); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_error_code(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_enum_MAPISTATUS(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REPL_error_code, 0); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum) -{ - offset = mapi_dissect_EcDoRpc_MAPI_REPL_UNION(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REPL_u, *opnum); - - return offset; -} - -int -mapi_dissect_struct_EcDoRpc_MAPI_REPL(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - guint8 opnum; - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - old_offset = offset; - - if (parent_tree) { - 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); - } - - offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_opnum(tvb, offset, pinfo, tree, di, drep, &opnum); - - offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_handle_idx(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_error_code(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_u(tvb, offset, pinfo, tree, di, drep, &opnum); - - - proto_item_set_len(item, offset-old_offset); - - - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_4_BYTES; - } - - return offset; -} - - -/* IDL: struct { */ -/* IDL: uint32 mapi_len; */ -/* IDL: uint16 length; */ -/* IDL: [unique(1)] EcDoRpc_MAPI_REQ *mapi_req; */ -/* IDL: [unique(1)] uint32 *handles; */ -/* IDL: } */ - -static int -mapi_dissect_element_request_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_request_mapi_len, 0); - - return offset; -} - -static int -mapi_dissect_element_request_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_request_length, 0); - - return offset; -} - -static int -mapi_dissect_element_request_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_request_req_, NDR_POINTER_UNIQUE, "Pointer to Req (EcDoRpc_MAPI_REQ)",hf_mapi_mapi_request_mapi_req); - - return offset; -} - -static int -mapi_dissect_element_request_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvb,offset,pinfo,tree,di,drep,hf_mapi_mapi_request_mapi_req,0); - - return offset; -} - -static int -mapi_dissect_element_request_handles(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_request_handles_, NDR_POINTER_UNIQUE, "Pointer to Handles (uint32)",hf_mapi_mapi_request_handles); - - return offset; -} - -static int -mapi_dissect_element_request_handles_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_request_handles, 0); - - return offset; -} + if (flags & (~( 0x00000002 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000002 )); -int -mapi_dissect_struct_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; + proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevObjectCreated, tvb, offset-2, 2, flags); + if (flags&( 0x00000004 )){ + proto_item_append_text(item, "fnevObjectCreated"); + if (flags & (~( 0x00000004 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000004 )); - ALIGN_TO_5_BYTES; + proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevObjectDeleted, tvb, offset-2, 2, flags); + if (flags&( 0x00000008 )){ + proto_item_append_text(item, "fnevObjectDeleted"); + if (flags & (~( 0x00000008 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000008 )); - old_offset = offset; + proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevObjectModified, tvb, offset-2, 2, flags); + if (flags&( 0x00000010 )){ + proto_item_append_text(item, "fnevObjectModified"); + if (flags & (~( 0x00000010 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000010 )); - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_mapi_request); + proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevObjectMoved, tvb, offset-2, 2, flags); + if (flags&( 0x00000020 )){ + proto_item_append_text(item, "fnevObjectMoved"); + if (flags & (~( 0x00000020 ))) + proto_item_append_text(item, ", "); } - - offset = mapi_dissect_element_request_len(tvb, offset, pinfo, tree, di, drep); + flags&=(~( 0x00000020 )); - offset = mapi_dissect_element_request_length(tvb, offset, pinfo, tree, di, drep); + proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevObjectCopied, tvb, offset-2, 2, flags); + if (flags&( 0x00000040 )){ + proto_item_append_text(item, "fnevObjectCopied"); + if (flags & (~( 0x00000040 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000040 )); - offset = mapi_dissect_element_request_req(tvb, offset, pinfo, tree, di, drep); + proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevSearchComplete, tvb, offset-2, 2, flags); + if (flags&( 0x00000080 )){ + proto_item_append_text(item, "fnevSearchComplete"); + if (flags & (~( 0x00000080 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000080 )); - offset = mapi_dissect_element_request_handles(tvb, offset, pinfo, tree, di, drep); + proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevTableModified, tvb, offset-2, 2, flags); + if (flags&( 0x00000100 )){ + proto_item_append_text(item, "fnevTableModified"); + if (flags & (~( 0x00000100 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000100 )); + proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevStatusObjectModified, tvb, offset-2, 2, flags); + if (flags&( 0x00000200 )){ + proto_item_append_text(item, "fnevStatusObjectModified"); + if (flags & (~( 0x00000200 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000200 )); - proto_item_set_len(item, offset-old_offset); + proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevReservedForMapi, tvb, offset-2, 2, flags); + if (flags&( 0x40000000 )){ + proto_item_append_text(item, "fnevReservedForMapi"); + if (flags & (~( 0x40000000 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x40000000 )); + proto_tree_add_boolean(tree, hf_mapi_ulEventType_fnevExtended, tvb, offset-2, 2, flags); + if (flags&( 0x80000000 )){ + proto_item_append_text(item, "fnevExtended"); + if (flags & (~( 0x80000000 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x80000000 )); - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; + if (flags) { + proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); } return offset; @@ -9687,94 +9317,75 @@ mapi_dissect_struct_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf /* IDL: struct { */ -/* IDL: uint32 mapi_len; */ -/* IDL: uint16 length; */ -/* IDL: [unique(1)] EcDoRpc_MAPI_REPL *mapi_repl; */ -/* IDL: [unique(1)] uint32 *handles; */ +/* IDL: uint32 codepage; */ +/* IDL: uint32 padding; */ +/* IDL: uint8 row; */ +/* IDL: uint16 mailbox_str_size; */ +/* IDL: [unique(1)] [charset(DOS)] uint8 *mailbox; */ /* IDL: } */ -static int -mapi_dissect_element_response_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_response_mapi_len, 0); - - return offset; -} - -static int -mapi_dissect_element_response_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_response_length, 0); - - return offset; -} - -static int -mapi_dissect_element_response_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_response_repl_, NDR_POINTER_UNIQUE, "Pointer to Repl (EcDoRpc_MAPI_REPL)",hf_mapi_mapi_response_mapi_repl); - return offset; -} +/* IDL: [switch_type(MAPI_OPNUM)] union { */ +/* IDL: [case(op_MAPI_Release)] [case(op_MAPI_Release)] Release_req mapi_Release; */ +/* IDL: [case(op_MAPI_OpenFolder)] [case(op_MAPI_OpenFolder)] OpenFolder_req mapi_OpenFolder; */ +/* IDL: [case(op_MAPI_GetProps)] [case(op_MAPI_GetProps)] GetProps_req mapi_GetProps; */ +/* IDL: [case(op_MAPI_OpenMsgStore)] [case(op_MAPI_OpenMsgStore)] OpenMsgStore_req mapi_OpenMsgStore; */ +/* IDL: } */ static int -mapi_dissect_element_response_repl_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_Release(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { - offset = mapi_dissect_struct_EcDoRpc_MAPI_REPL(tvb,offset,pinfo,tree,di,drep,hf_mapi_mapi_response_mapi_repl,0); + offset = mapi_dissect_struct_Release_req(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_Release,0); return offset; } -static int -mapi_dissect_element_response_handles(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_response_handles_, NDR_POINTER_UNIQUE, "Pointer to Handles (uint32)",hf_mapi_mapi_response_handles); - return offset; -} +/* IDL: [public(1)] [switch_type(MAPI_OPNUM)] union { */ +/* IDL: [case(op_MAPI_Release)] [case(op_MAPI_Release)] Release_repl mapi_Release; */ +/* IDL: [case(op_MAPI_OpenFolder)] [case(op_MAPI_OpenFolder)] OpenFolder_repl mapi_OpenFolder; */ +/* IDL: [case(op_MAPI_GetProps)] [case(op_MAPI_GetProps)] GetProps_repl mapi_GetProps; */ +/* IDL: } */ static int -mapi_dissect_element_response_handles_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_response_handles, 0); + offset = mapi_dissect_struct_Release_repl(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_Release,0); return offset; } -int -mapi_dissect_struct_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - ALIGN_TO_5_BYTES; - - old_offset = offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_mapi_response); - } - - offset = mapi_dissect_element_response_len(tvb, offset, pinfo, tree, di, drep); - - offset = mapi_dissect_element_response_length(tvb, offset, pinfo, tree, di, drep); - offset = mapi_dissect_element_response_repl(tvb, offset, pinfo, tree, di, drep); +/* IDL: struct { */ +/* IDL: uint8 opnum; */ +/* IDL: uint8 mapi_flags; */ +/* IDL: uint8 handle_idx; */ +/* IDL: [switch_is(opnum)] EcDoRpc_MAPI_REQ_UNION u; */ +/* IDL: } */ - offset = mapi_dissect_element_response_handles(tvb, offset, pinfo, tree, di, drep); +/* IDL: struct { */ +/* IDL: uint8 opnum; */ +/* IDL: uint8 handle_idx; */ +/* IDL: MAPISTATUS error_code; */ +/* IDL: [switch_is(opnum)] EcDoRpc_MAPI_REPL_UNION u; */ +/* IDL: } */ - proto_item_set_len(item, offset-old_offset); +/* IDL: struct { */ +/* IDL: uint32 mapi_len; */ +/* IDL: uint16 length; */ +/* IDL: [unique(1)] EcDoRpc_MAPI_REQ *mapi_req; */ +/* IDL: [unique(1)] uint32 *handles; */ +/* IDL: } */ - if (di->call_data->flags & DCERPC_IS_NDR64) { - ALIGN_TO_5_BYTES; - } - return offset; -} +/* IDL: struct { */ +/* IDL: uint32 mapi_len; */ +/* IDL: uint16 length; */ +/* IDL: [unique(1)] EcDoRpc_MAPI_REPL *mapi_repl; */ +/* IDL: [unique(1)] uint32 *handles; */ +/* IDL: } */ /* IDL: struct { */ @@ -10137,78 +9748,6 @@ mapi_dissect_element_EcDoRpc_offset(tvbuff_t *tvb _U_, int offset _U_, packet_in return offset; } -static int -mapi_dissect_element_EcDoRpc_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_EcDoRpc_request_, NDR_POINTER_REF, "Pointer to Request (mapi_request)",hf_mapi_EcDoRpc_mapi_request); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_request_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - guint3264 size; - int conformant = di->conformant_run; - tvbuff_t *subtvb; - - if (!conformant) { - guint32 saved_flags = di->call_data->flags; - offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_mapi_request_, &size); - di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset(tvb, offset, (const gint)size, -1); - mapi_dissect_element_EcDoRpc_request__(subtvb, 0, pinfo, tree, di, drep); - offset += (int)size; - di->call_data->flags = saved_flags; - } - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_request__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_struct_request(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_mapi_request,0); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, mapi_dissect_element_EcDoRpc_response_, NDR_POINTER_REF, "Pointer to Response (mapi_response)",hf_mapi_EcDoRpc_mapi_response); - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_response_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - guint3264 size; - int conformant = di->conformant_run; - tvbuff_t *subtvb; - - if (!conformant) { - guint32 saved_flags = di->call_data->flags; - offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_mapi_response_, &size); - di->call_data->flags &= ~DCERPC_IS_NDR64; - subtvb = tvb_new_subset(tvb, offset, (const gint)size, -1); - mapi_dissect_element_EcDoRpc_response__(subtvb, 0, pinfo, tree, di, drep); - offset += (int)size; - di->call_data->flags = saved_flags; - } - - return offset; -} - -static int -mapi_dissect_element_EcDoRpc_response__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_struct_response(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_mapi_response,0); - - return offset; -} - static int mapi_dissect_element_EcDoRpc_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { @@ -10639,8 +10178,6 @@ void proto_register_dcerpc_mapi(void) { "Offset", "mapi.EcDoRpc.offset", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoConnect_alloc_space, { "Alloc Space", "mapi.EcDoConnect.alloc_space", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REQ_u, - { "U", "mapi.EcDoRpc_MAPI_REQ.u", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_mapi_ulEventType_fnevCriticalError, { "Fnevcriticalerror", "mapi.ulEventType.fnevCriticalError", FT_BOOLEAN, 16, TFS(&ulEventType_fnevCriticalError_tfs), ( 0x00000001 ), NULL, HFILL }}, { &hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenFolder, @@ -10651,16 +10188,12 @@ void proto_register_dcerpc_mapi(void) { "Notifkey", "mapi.EcRRegisterPushNotification.notifkey", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcRUnregisterPushNotification_unknown, { "Unknown", "mapi.EcRUnregisterPushNotification.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_mapi_response_mapi_len, - { "Mapi Len", "mapi.mapi_response.mapi_len", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenMsgStore_req_codepage, - { "Codepage", "mapi.OpenMsgStore_req.codepage", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_mapi_request_mapi_req, - { "Mapi Req", "mapi.mapi_request.mapi_req", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_codepage, + { "Codepage", "mapi.EcDoRpc.codepage", FT_UINT32, BASE_HEX, NULL, 0, "NULL", HFILL }}, { &hf_mapi_recipients_headers_username, { "Username", "mapi.recipients_headers.username", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_GetProps_repl_layout, - { "Layout", "mapi.GetProps_repl.layout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_mapi_request_mapi_req, + { "Mapi Req", "mapi.mapi_request.mapi_req", FT_NONE, BASE_NONE, NULL, 0, "HFILL", HFILL }}, { &hf_mapi_EcRRegisterPushNotification_retval, { "Retval", "mapi.EcRRegisterPushNotification.retval", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_ulEventType_fnevObjectDeleted, @@ -10677,8 +10210,6 @@ void proto_register_dcerpc_mapi(void) { "Sockaddr", "mapi.EcRRegisterPushNotification.sockaddr", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_LPSTR_lppszA, { "Lppsza", "mapi.LPSTR.lppszA", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_mapi_response_handles, - { "Handles", "mapi.mapi_response.handles", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoRpc_max_data, { "Max Data", "mapi.EcDoRpc.max_data", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_OpenMessage_recipients_codepage, @@ -10689,14 +10220,12 @@ void proto_register_dcerpc_mapi(void) { "Unknown2", "mapi.EcRRegisterPushNotification.unknown2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_recipients_headers_prop_count, { "Prop Count", "mapi.recipients_headers.prop_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenMsgStore_req_row, - { "Row", "mapi.OpenMsgStore_req.row", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_recipients_headers_bitmask, { "Bitmask", "mapi.recipients_headers.bitmask", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_FILETIME_dwLowDateTime, { "Dwlowdatetime", "mapi.FILETIME.dwLowDateTime", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenMsgStore_req_mailbox, - { "Mailbox", "mapi.OpenMsgStore_req.mailbox", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_unknown3, + { "Unknown3", "mapi.EcDoRpc.unknown3", FT_UINT32, BASE_HEX, NULL, 0, "NULL", HFILL }}, { &hf_mapi_MAPISTATUS_status, { "MAPISTATUS", "mapi.MAPISTATUS_status", FT_UINT32, BASE_HEX, VALS(mapi_MAPISTATUS_vals), 0, NULL, HFILL }}, { &hf_mapi_recipient_type_EXCHANGE, @@ -10709,8 +10238,6 @@ void proto_register_dcerpc_mapi(void) { "Fnevsearchcomplete", "mapi.ulEventType.fnevSearchComplete", FT_BOOLEAN, 16, TFS(&ulEventType_fnevSearchComplete_tfs), ( 0x00000080 ), NULL, HFILL }}, { &hf_mapi_OpenMessage_recipients_recipients_headers_, { "Subcontext length", "mapi.OpenMessage_recipients.subcontext", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, - { &hf_mapi_mapi_request_length, - { "Length", "mapi.mapi_request.length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_ulEventType_fnevStatusObjectModified, { "Fnevstatusobjectmodified", "mapi.ulEventType.fnevStatusObjectModified", FT_BOOLEAN, 16, TFS(&ulEventType_fnevStatusObjectModified_tfs), ( 0x00000200 ), NULL, HFILL }}, { &hf_mapi_ulEventType_fnevObjectCreated, @@ -10727,40 +10254,40 @@ void proto_register_dcerpc_mapi(void) { "Mapi Request", "mapi.EcDoRpc.mapi_request", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_Release, { "Mapi Release", "mapi.EcDoRpc_MAPI_REQ_UNION.mapi_Release", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenMsgStore_req_mailbox_str_size, - { "Mailbox Str Size", "mapi.OpenMsgStore_req.mailbox_str_size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_layout, + { "Layout", "mapi.EcDoRpc.layout", FT_UINT8, BASE_DEC, NULL, 0, "NULL", HFILL }}, { &hf_mapi_decrypted_data, { "Decrypted data", "mapi.decrypted.data", FT_BYTES, BASE_NONE, NULL, 0, "NULL", HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REPL_handle_idx, - { "Handle Idx", "mapi.EcDoRpc_MAPI_REPL.handle_idx", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_GetProps_req_unknown, - { "Unknown", "mapi.GetProps_req.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_ulEventType_fnevNewMail, { "Fnevnewmail", "mapi.ulEventType.fnevNewMail", FT_BOOLEAN, 16, TFS(&ulEventType_fnevNewMail_tfs), ( 0x00000002 ), NULL, HFILL }}, + { &hf_mapi_EcDoRpc_mapi_tag, + { "MAPI tag", "mapi.EcDoRpc.mapi_tag", FT_UINT32, BASE_HEX, NULL, 0, "NULL", HFILL }}, + { &hf_mapi_EcDoRpc_mapi_flags, + { "mapi_flags", "mapi.EcDoRpc.mapi_flags", FT_UINT8, BASE_HEX, NULL, 0, "NULL", HFILL }}, { &hf_mapi_SPropValue_CTR_b, { "B", "mapi.SPropValue_CTR.b", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_mapi_response_mapi_repl, - { "Mapi Repl", "mapi.mapi_response.mapi_repl", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { "Mapi Repl", "mapi.mapi_response.mapi_repl", FT_NONE, BASE_NONE, NULL, 0, "NULL", HFILL }}, + { &hf_mapi_EcDoRpc_prop_count, + { "Prop count", "mapi.EcDoRpc.prop_count", FT_UINT16, BASE_HEX, NULL, 0, "NULL", HFILL }}, { &hf_mapi_recipients_headers_layout, { "Layout", "mapi.recipients_headers.layout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoRpc_length, { "Length", "mapi.EcDoRpc.length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_RecipExchange_organization_length, { "Organization Length", "mapi.RecipExchange.organization_length", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_unknown2, + { "Unknown2", "mapi.EcDoRpc.unknown2", FT_UINT8, BASE_DEC, NULL, 0, "NULL", HFILL }}, + { &hf_mapi_EcDoRpc_handle_index, + { "Handle index", "mapi.EcDoRpc.handle_index", FT_UINT8, BASE_DEC, NULL, 0, "NULL", HFILL }}, { &hf_mapi_OpenMessage_recipients_recipients_headers, { "Recipients Headers", "mapi.OpenMessage_recipients.recipients_headers", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_GetProps, { "Mapi Getprops", "mapi.EcDoRpc_MAPI_REQ_UNION.mapi_GetProps", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REPL_error_code, - { "Error Code", "mapi.EcDoRpc_MAPI_REPL.error_code", FT_UINT32, BASE_DEC, VALS(mapi_MAPISTATUS_vals), 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REPL_opnum, - { "Opnum", "mapi.EcDoRpc_MAPI_REPL.opnum", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_SPropValue_CTR_dbl, { "Dbl", "mapi.SPropValue_CTR.dbl", FT_INT64, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_OpenMessage_req_message_id, { "Message Id", "mapi.OpenMessage_req.message_id", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenFolder_req_unknown, - { "Unknown", "mapi.OpenFolder_req.unknown", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoRpc_size, { "Size", "mapi.EcDoRpc.size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoConnect_session_nb, @@ -10769,8 +10296,6 @@ void proto_register_dcerpc_mapi(void) { "MAPI handle", "mapi.mapi_handle", FT_UINT32, BASE_HEX, NULL, 0, "NULL", HFILL }}, { &hf_mapi_pdu_len, { "Length", "mapi.pdu.len", FT_UINT16, BASE_HEX, NULL, 0x0, "Size of the command PDU", HFILL }}, - { &hf_mapi_mapi_request_mapi_len, - { "Mapi Len", "mapi.mapi_request.mapi_len", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_SPropValue_CTR_ft, { "Ft", "mapi.SPropValue_CTR.ft", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_mapi_SPropValue_ulPropTag, @@ -10781,34 +10306,26 @@ void proto_register_dcerpc_mapi(void) { "Uleventmask", "mapi.EcRRegisterPushNotification.ulEventMask", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenFolder, { "Mapi Openfolder", "mapi.EcDoRpc_MAPI_REPL_UNION.mapi_OpenFolder", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenMsgStore_req_padding, - { "Padding", "mapi.OpenMsgStore_req.padding", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_unknown1, + { "Unknown1", "mapi.EcDoRpc.unknown1", FT_UINT16, BASE_HEX, NULL, 0, "NULL", HFILL }}, { &hf_mapi_FILETIME_dwHighDateTime, { "Dwhighdatetime", "mapi.FILETIME.dwHighDateTime", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_OpenMessage_req_message_permissions, { "Message Permissions", "mapi.OpenMessage_req.message_permissions", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_mapi_request_handles, - { "Handles", "mapi.mapi_request.handles", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenFolder_req_handle_idx, - { "Handle Idx", "mapi.OpenFolder_req.handle_idx", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_padding, + { "Padding", "mapi.EcDoRpc.padding", FT_UINT32, BASE_HEX, NULL, 0, "NULL", HFILL }}, { &hf_mapi_ulEventType_fnevReservedForMapi, { "Fnevreservedformapi", "mapi.ulEventType.fnevReservedForMapi", FT_BOOLEAN, 16, TFS(&ulEventType_fnevReservedForMapi_tfs), ( 0x40000000 ), NULL, HFILL }}, { &hf_mapi_SPropValue_CTR_l, { "L", "mapi.SPropValue_CTR.l", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_GetProps_req_prop_count, - { "Prop Count", "mapi.GetProps_req.prop_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_GetProps_repl_prop_data, - { "Prop Data", "mapi.GetProps_repl.prop_data", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoConnect_user, { "User", "mapi.EcDoConnect.user", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REPL_u, - { "U", "mapi.EcDoRpc_MAPI_REPL.u", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoConnect_unknown4, { "Unknown4", "mapi.EcDoConnect.unknown4", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenFolder_req_folder_id, - { "Folder Id", "mapi.OpenFolder_req.folder_id", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_folder_id, + { "Folder ID", "mapi.EcDoRpc.folder_id", FT_UINT64, BASE_HEX, NULL, 0, "NULL", HFILL }}, { &hf_mapi_MAPI_OPNUM, - { "Opnum", "mapi.EcDoRpc_MAPI_REQ.opnum", FT_UINT8, BASE_HEX, VALS(mapi_MAPI_OPNUM_vals), 0, "NULL", HFILL }}, + { "Opnum", "mapi.EcDoRpc_MAPI_REPL.opnum", FT_UINT8, BASE_HEX, VALS(mapi_MAPI_OPNUM_vals), 0, "NULL", HFILL }}, { &hf_mapi_EcDoConnect_code_page, { "Code Page", "mapi.EcDoConnect.code_page", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_handle, @@ -10817,10 +10334,6 @@ void proto_register_dcerpc_mapi(void) { "Method", "mapi.input_locale.method", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_input_locale_language, { "Language", "mapi.input_locale.language", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_mapi_response_length, - { "Length", "mapi.mapi_response.length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_GetProps_req_properties, - { "Properties", "mapi.GetProps_req.properties", FT_UINT32, BASE_DEC, VALS(mapi_MAPITAGS_vals), 0, NULL, HFILL }}, { &hf_mapi_EcDoRpc_mapi_response, { "Mapi Response", "mapi.EcDoRpc.mapi_response", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoConnect_store_version, @@ -10837,22 +10350,24 @@ void proto_register_dcerpc_mapi(void) { "Fnevextended", "mapi.ulEventType.fnevExtended", FT_BOOLEAN, 16, TFS(&ulEventType_fnevExtended_tfs), ( 0x80000000 ), NULL, HFILL }}, { &hf_mapi_recipients_headers_prop_values, { "Prop Values", "mapi.recipients_headers.prop_values", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REQ_mapi_flags, - { "Mapi Flags", "mapi.EcDoRpc_MAPI_REQ.mapi_flags", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenFolder_repl_unknown, - { "Unknown", "mapi.OpenFolder_repl.unknown", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_subcontext_size, + { "Subcontext size", "mapi.EcDoRpc.subcontext_size", FT_UINT32, BASE_HEX, NULL, 0, "NULL", HFILL }}, { &hf_mapi_opnum, { "Operation", "mapi.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_Release, { "Mapi Release", "mapi.EcDoRpc_MAPI_REPL_UNION.mapi_Release", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_row, + { "Row", "mapi.EcDoRpc.row", FT_UINT8, BASE_HEX, NULL, 0, "NULL", HFILL }}, { &hf_mapi_property_types, { "Value", "mapi.SPropValue.value", FT_UINT32, BASE_HEX, VALS(mapi_property_types_vals), 0, "NULL", HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REQ_handle_idx, - { "Handle Idx", "mapi.EcDoRpc_MAPI_REQ.handle_idx", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_str_length, + { "Length", "mapi.EcDoRpc.str_length", FT_UINT16, BASE_HEX, NULL, 0, "NULL", HFILL }}, { &hf_mapi_recipient_displayname_7bit_lpszA, { "Lpsza", "mapi.recipient_displayname_7bit.lpszA", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcRRegisterPushNotification_sockaddr_len, { "Sockaddr Len", "mapi.EcRRegisterPushNotification.sockaddr_len", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_mailbox, + { "Mailbox", "mapi.EcDoRpc.mailbox", FT_STRING, BASE_NONE, NULL, 0, "NULL", HFILL }}, { &hf_mapi_EcRRegisterPushNotification_notif_len, { "Notif Len", "mapi.EcRRegisterPushNotification.notif_len", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_mapi_EcDoConnect_unknown3, @@ -10873,6 +10388,15 @@ void proto_register_dcerpc_mapi(void) static gint *ett[] = { + &ett_mapi_mapi_request, + &ett_mapi_EcDoRpc_MAPI_REQ, + &ett_mapi_OpenFolder_req, + &ett_mapi_GetProps_req, + &ett_mapi_OpenMsgStore_req, + &ett_mapi_mapi_response, + &ett_mapi_EcDoRpc_MAPI_REPL, + &ett_mapi_OpenFolder_repl, + &ett_mapi_GetProps_repl, &ett_dcerpc_mapi, &ett_mapi_DATA_BLOB, &ett_mapi_input_locale, @@ -10883,8 +10407,6 @@ void proto_register_dcerpc_mapi(void) &ett_mapi_SRow, &ett_mapi_Release_req, &ett_mapi_Release_repl, - &ett_mapi_OpenFolder_req, - &ett_mapi_OpenFolder_repl, &ett_mapi_OpenMessage_req, &ett_mapi_RecipExchange, &ett_mapi_RecipSMTP, @@ -10892,16 +10414,9 @@ void proto_register_dcerpc_mapi(void) &ett_mapi_recipient_displayname_7bit, &ett_mapi_recipients_headers, &ett_mapi_OpenMessage_recipients, - &ett_mapi_GetProps_req, - &ett_mapi_GetProps_repl, &ett_mapi_ulEventType, - &ett_mapi_OpenMsgStore_req, &ett_mapi_EcDoRpc_MAPI_REQ_UNION, &ett_mapi_EcDoRpc_MAPI_REPL_UNION, - &ett_mapi_EcDoRpc_MAPI_REQ, - &ett_mapi_EcDoRpc_MAPI_REPL, - &ett_mapi_mapi_request, - &ett_mapi_mapi_response, }; proto_dcerpc_mapi = proto_register_protocol("Exchange 5.5 EMSMDB", "MAPI", "mapi"); diff --git a/epan/dissectors/packet-dcerpc-mapi.h b/epan/dissectors/packet-dcerpc-mapi.h index 5088ebb6a6..16d0b7fe61 100644 --- a/epan/dissectors/packet-dcerpc-mapi.h +++ b/epan/dissectors/packet-dcerpc-mapi.h @@ -1,6 +1,6 @@ /* DO NOT EDIT This file was automatically generated by Pidl - from mapi/mapi.idl and mapi/mapi.cnf. + from mapi.idl and mapi.cnf. Pidl is a perl based IDL compiler for DCE/RPC idl files. It is maintained by the Samba team, not the Wireshark team. @@ -3617,8 +3617,6 @@ int mapi_dissect_enum_ulRowFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info int mapi_dissect_struct_SRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); int mapi_dissect_struct_Release_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); int mapi_dissect_struct_Release_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); -int mapi_dissect_struct_OpenFolder_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); -int mapi_dissect_struct_OpenFolder_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); int mapi_dissect_struct_OpenMessage_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); #define CP_USASCII (0x04E4) #define CP_UNICODE (0x04B0) @@ -3649,12 +3647,5 @@ extern const value_string mapi_OM_recipient_displayname_7bit_vals[]; int mapi_dissect_enum_OM_recipient_displayname_7bit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint16 *param _U_); int mapi_dissect_struct_recipients_headers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); int mapi_dissect_struct_OpenMessage_recipients(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); -int mapi_dissect_struct_GetProps_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); -int mapi_dissect_struct_GetProps_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); int mapi_dissect_bitmap_ulEventType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); -int mapi_dissect_struct_OpenMsgStore_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); -int mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); -int mapi_dissect_struct_EcDoRpc_MAPI_REPL(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); -int mapi_dissect_struct_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); -int mapi_dissect_struct_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_); #endif /* __PACKET_DCERPC_MAPI_H */ diff --git a/epan/dissectors/pidl/mapi/request.cnf.c b/epan/dissectors/pidl/mapi/request.cnf.c index 4d49102cfe..0b063a7cfd 100644 --- a/epan/dissectors/pidl/mapi/request.cnf.c +++ b/epan/dissectors/pidl/mapi/request.cnf.c @@ -110,7 +110,7 @@ mapi_dissect_element_EcDoRpc_request(tvbuff_t *tvb _U_, int offset _U_, packet_i } -static int +static int mapi_dissect_element_EcDoRpc_request_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { guint32 size; @@ -164,7 +164,7 @@ mapi_dissect_element_EcDoRpc_request_(tvbuff_t *tvb _U_, int offset _U_, packet_ } -/* +/* * Analyze mapi_request real contents */ static int mapi_dissect_element_EcDoRpc_request__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) @@ -275,17 +275,11 @@ mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvbuff_t *tvb _U_, int { proto_item *item = NULL; proto_tree *tree = NULL; - int old_offset; int origin_offset; /**** Function parameters ****/ - guint32 codepage; - guint32 padding; - guint8 row; guint16 str_len; - gchar *mailbox; origin_offset = offset; - old_offset = offset; if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenMsgStore, tvb, offset, -1, ENC_NA); @@ -305,7 +299,6 @@ mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvbuff_t *tvb _U_, int proto_tree_add_item(tree, hf_mapi_EcDoRpc_str_length, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; - 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; diff --git a/epan/dissectors/pidl/mapi/response.cnf.c b/epan/dissectors/pidl/mapi/response.cnf.c index 30b4f59eb9..d0a16d42ca 100644 --- a/epan/dissectors/pidl/mapi/response.cnf.c +++ b/epan/dissectors/pidl/mapi/response.cnf.c @@ -54,7 +54,6 @@ mapi_dissect_struct_EcDoRpc_MAPI_REPL(tvbuff_t *tvb _U_, int offset _U_, packet_ proto_tree *tree = NULL; int old_offset; guint8 opnum; - guint8 handle_idx; guint32 retval; old_offset = offset; @@ -71,7 +70,6 @@ mapi_dissect_struct_EcDoRpc_MAPI_REPL(tvbuff_t *tvb _U_, int offset _U_, packet_ 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) { - handle_idx = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_mapi_EcDoRpc_handle_index, tvb, offset, 1, ENC_NA); offset += 1; @@ -194,8 +192,6 @@ mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvbuff_t *tvb _U_, int o proto_tree *tree = NULL; int old_offset; int origin_offset; - /**** Function parameters ****/ - guint16 unknown; origin_offset = offset; @@ -222,7 +218,6 @@ mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvbuff_t *tvb _U_, int off proto_tree *tree = NULL; int origin_offset; /**** Function parameters ****/ - guint8 layout; guint16 length; origin_offset = offset; -- cgit v1.2.3