From d62f92b7f1ab7db4f1ca5c2608598c5760183a76 Mon Sep 17 00:00:00 2001 From: Michael Mann Date: Fri, 8 Nov 2013 02:02:43 +0000 Subject: Make LDAP dissector use ASN.1 private_data instead of pinfo->private_data. Cleanup a forgotten pinfo->private_data use in the H245 dissector. svn path=/trunk/; revision=53160 --- epan/dissectors/packet-ldap.c | 151 +++++++++++++++++++++--------------------- 1 file changed, 76 insertions(+), 75 deletions(-) (limited to 'epan/dissectors/packet-ldap.c') diff --git a/epan/dissectors/packet-ldap.c b/epan/dissectors/packet-ldap.c index edb6c99711..70f2b4d0e9 100644 --- a/epan/dissectors/packet-ldap.c +++ b/epan/dissectors/packet-ldap.c @@ -191,11 +191,11 @@ static int hf_ldap_AccessMask_ADS_WRITE_PROP = -1; static int hf_ldap_AccessMask_ADS_DELETE_TREE = -1; static int hf_ldap_AccessMask_ADS_LIST_OBJECT = -1; static int hf_ldap_AccessMask_ADS_CONTROL_ACCESS = -1; +static int hf_ldap_LDAPMessage_PDU = -1; /*--- Included file: packet-ldap-hf.c ---*/ #line 1 "../../asn1/ldap/packet-ldap-hf.c" -static int hf_ldap_LDAPMessage_PDU = -1; /* LDAPMessage */ static int hf_ldap_SearchControlValue_PDU = -1; /* SearchControlValue */ static int hf_ldap_SortKeyList_PDU = -1; /* SortKeyList */ static int hf_ldap_SortResult_PDU = -1; /* SortResult */ @@ -341,7 +341,7 @@ static int hf_ldap_graceAuthNsRemaining = -1; /* INTEGER_0_maxInt */ static int hf_ldap_error = -1; /* T_error */ /*--- End of included file: packet-ldap-hf.c ---*/ -#line 188 "../../asn1/ldap/packet-ldap-template.c" +#line 189 "../../asn1/ldap/packet-ldap-template.c" /* Initialize the subtree pointers */ static gint ett_ldap = -1; @@ -414,7 +414,7 @@ static gint ett_ldap_PasswordPolicyResponseValue = -1; static gint ett_ldap_T_warning = -1; /*--- End of included file: packet-ldap-ett.c ---*/ -#line 199 "../../asn1/ldap/packet-ldap-template.c" +#line 200 "../../asn1/ldap/packet-ldap-template.c" static expert_field ei_ldap_exceeded_filter_length = EI_INIT; static expert_field ei_ldap_too_many_filter_elements = EI_INIT; @@ -963,10 +963,9 @@ static void ldap_do_protocolop(packet_info *pinfo) } static ldap_call_response_t * -ldap_match_call_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint messageId, guint protocolOpTag) +ldap_match_call_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint messageId, guint protocolOpTag, ldap_conv_info_t *ldap_info) { ldap_call_response_t lcr, *lcrp=NULL; - ldap_conv_info_t *ldap_info = (ldap_conv_info_t *)pinfo->private_data; /* first see if we have already matched this */ @@ -1112,7 +1111,7 @@ static int dissect_ldap_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int static int dissect_ldap_MessageID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 98 "../../asn1/ldap/ldap.cnf" +#line 97 "../../asn1/ldap/ldap.cnf" offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, &MessageID); @@ -1139,7 +1138,7 @@ dissect_ldap_INTEGER_1_127(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off static int dissect_ldap_LDAPString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 322 "../../asn1/ldap/ldap.cnf" +#line 320 "../../asn1/ldap/ldap.cnf" tvbuff_t *parameter_tvb = NULL; const char *ldapstring = NULL; gchar *sc = NULL; /* semi-colon pointer */ @@ -1254,11 +1253,9 @@ ldap_conv_info_t *ldap_info; NULL); - ldap_info = (ldap_conv_info_t *)actx->pinfo->private_data; + ldap_info = (ldap_conv_info_t *)actx->private_data; ldap_info->auth_type = LDAP_AUTH_SIMPLE; - actx->pinfo->private_data = ldap_info; - return offset; @@ -1268,7 +1265,7 @@ ldap_conv_info_t *ldap_info; static int dissect_ldap_Mechanism(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 177 "../../asn1/ldap/ldap.cnf" +#line 175 "../../asn1/ldap/ldap.cnf" ldap_conv_info_t *ldap_info; tvbuff_t *parameter_tvb; @@ -1276,7 +1273,7 @@ char *mechanism = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); - ldap_info = (ldap_conv_info_t *)actx->pinfo->private_data; + ldap_info = (ldap_conv_info_t *)actx->private_data; ldap_info->auth_type = LDAP_AUTH_SASL; if (!parameter_tvb) @@ -1303,7 +1300,6 @@ char *mechanism = NULL; g_free(ldap_info->auth_mech); ldap_info->auth_mech = mechanism; } - actx->pinfo->private_data = ldap_info; } @@ -1314,7 +1310,7 @@ char *mechanism = NULL; static int dissect_ldap_Credentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 212 "../../asn1/ldap/ldap.cnf" +#line 209 "../../asn1/ldap/ldap.cnf" tvbuff_t *parameter_tvb; ldap_conv_info_t *ldap_info; @@ -1329,7 +1325,7 @@ gint32 tag; if (!parameter_tvb) return offset; - ldap_info = (ldap_conv_info_t *)actx->pinfo->private_data; + ldap_info = (ldap_conv_info_t *)actx->private_data; get_ber_identifier(parameter_tvb, 0, &ber_class, &pc, &tag); /*if ((ldap_info->auth_mech != NULL) && (strcmp(ldap_info->auth_mech, "GSS-SPNEGO") == 0) && (ber_class==BER_CLASS_CON)) {*/ @@ -1353,7 +1349,8 @@ gint32 tag; call_dissector(gssapi_handle, parameter_tvb, actx->pinfo, tree); } } - actx->pinfo->private_data = ldap_info; + /* Restore private data */ + actx->private_data = ldap_info; @@ -1380,7 +1377,7 @@ dissect_ldap_SaslCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o static int dissect_ldap_T_ntlmsspNegotiate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 704 "../../asn1/ldap/ldap.cnf" +#line 702 "../../asn1/ldap/ldap.cnf" /* make sure the protocol op comes first */ ldap_do_protocolop(actx->pinfo); @@ -1396,7 +1393,7 @@ dissect_ldap_T_ntlmsspNegotiate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in static int dissect_ldap_T_ntlmsspAuth(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 711 "../../asn1/ldap/ldap.cnf" +#line 709 "../../asn1/ldap/ldap.cnf" /* make sure the protocol op comes first */ ldap_do_protocolop(actx->pinfo); @@ -1427,7 +1424,7 @@ static const ber_choice_t AuthenticationChoice_choice[] = { static int dissect_ldap_AuthenticationChoice(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 494 "../../asn1/ldap/ldap.cnf" +#line 492 "../../asn1/ldap/ldap.cnf" gint branch = -1; gint auth = -1; const gchar *valstr; @@ -1534,7 +1531,7 @@ static const value_string ldap_BindResponse_resultCode_vals[] = { static int dissect_ldap_BindResponse_resultCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 442 "../../asn1/ldap/ldap.cnf" +#line 440 "../../asn1/ldap/ldap.cnf" const gchar *valstr; @@ -1561,7 +1558,7 @@ dissect_ldap_BindResponse_resultCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U static int dissect_ldap_T_bindResponse_matchedDN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 718 "../../asn1/ldap/ldap.cnf" +#line 716 "../../asn1/ldap/ldap.cnf" tvbuff_t *new_tvb=NULL; offset = dissect_ber_octet_string(FALSE, actx, tree, tvb, offset, hf_ldap_matchedDN, &new_tvb); @@ -1598,7 +1595,7 @@ dissect_ldap_LDAPURL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); -#line 51 "../../asn1/ldap/ldap.cnf" +#line 50 "../../asn1/ldap/ldap.cnf" PROTO_ITEM_SET_URL(actx->created_item); @@ -1622,7 +1619,7 @@ dissect_ldap_Referral(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _ static int dissect_ldap_ServerSaslCreds(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 252 "../../asn1/ldap/ldap.cnf" +#line 250 "../../asn1/ldap/ldap.cnf" tvbuff_t *parameter_tvb = NULL; ldap_conv_info_t *ldap_info; @@ -1632,7 +1629,7 @@ ldap_conv_info_t *ldap_info; if (!parameter_tvb) return offset; - ldap_info = (ldap_conv_info_t *)actx->pinfo->private_data; + ldap_info = (ldap_conv_info_t *)actx->private_data; switch (ldap_info->auth_type) { /* For Kerberos V4, dissect it as a ticket. */ @@ -1692,7 +1689,7 @@ ldap_conv_info_t *ldap_info; } break; } - actx->pinfo->private_data = ldap_info; + actx->private_data = ldap_info; @@ -1740,7 +1737,7 @@ dissect_ldap_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, static int dissect_ldap_UnbindRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 516 "../../asn1/ldap/ldap.cnf" +#line 514 "../../asn1/ldap/ldap.cnf" implicit_tag = TRUE; /* correct problem with asn2wrs */ @@ -1770,7 +1767,7 @@ static const value_string ldap_T_scope_vals[] = { static int dissect_ldap_T_scope(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 410 "../../asn1/ldap/ldap.cnf" +#line 408 "../../asn1/ldap/ldap.cnf" guint32 scope = 0xffff; const gchar *valstr; @@ -1836,7 +1833,7 @@ static int dissect_ldap_T_and_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ldap_Filter(implicit_tag, tvb, offset, actx, tree, hf_index); -#line 562 "../../asn1/ldap/ldap.cnf" +#line 560 "../../asn1/ldap/ldap.cnf" if(and_filter_string){ and_filter_string=wmem_strdup_printf(wmem_packet_scope(), "(&%s%s)",and_filter_string,Filter_string); } else { @@ -1854,7 +1851,7 @@ static const ber_sequence_t T_and_set_of[1] = { static int dissect_ldap_T_and(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 569 "../../asn1/ldap/ldap.cnf" +#line 567 "../../asn1/ldap/ldap.cnf" proto_tree *tr=NULL; proto_item *it=NULL; const char *old_and_filter_string=and_filter_string; @@ -1887,7 +1884,7 @@ static int dissect_ldap_T_or_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ldap_Filter(implicit_tag, tvb, offset, actx, tree, hf_index); -#line 589 "../../asn1/ldap/ldap.cnf" +#line 587 "../../asn1/ldap/ldap.cnf" if(or_filter_string){ or_filter_string=wmem_strdup_printf(wmem_packet_scope(), "(|%s%s)",or_filter_string,Filter_string); } else { @@ -1906,7 +1903,7 @@ static const ber_sequence_t T_or_set_of[1] = { static int dissect_ldap_T_or(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 597 "../../asn1/ldap/ldap.cnf" +#line 595 "../../asn1/ldap/ldap.cnf" proto_tree *tr=NULL; proto_item *it=NULL; const char *old_or_filter_string=or_filter_string; @@ -1937,7 +1934,7 @@ static int dissect_ldap_T_not(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ldap_Filter(implicit_tag, tvb, offset, actx, tree, hf_index); -#line 618 "../../asn1/ldap/ldap.cnf" +#line 616 "../../asn1/ldap/ldap.cnf" Filter_string=wmem_strdup_printf(wmem_packet_scope(), "(!%s)",string_or_null(Filter_string)); @@ -1975,7 +1972,7 @@ static int dissect_ldap_T_equalityMatch(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ldap_AttributeValueAssertion(implicit_tag, tvb, offset, actx, tree, hf_index); -#line 539 "../../asn1/ldap/ldap.cnf" +#line 537 "../../asn1/ldap/ldap.cnf" Filter_string=wmem_strdup_printf(wmem_packet_scope(), "(%s=%s)", string_or_null(attributedesc_string), string_or_null(ldapvalue_string)); @@ -2006,7 +2003,7 @@ dissect_ldap_T_substringFilter_substrings_item(gboolean implicit_tag _U_, tvbuff T_substringFilter_substrings_item_choice, hf_index, ett_ldap_T_substringFilter_substrings_item, NULL); -#line 644 "../../asn1/ldap/ldap.cnf" +#line 642 "../../asn1/ldap/ldap.cnf" if (substring_item_final) { substring_value=wmem_strdup_printf(wmem_packet_scope(), "%s%s", (substring_value?substring_value:"*"), @@ -2046,7 +2043,7 @@ static const ber_sequence_t SubstringFilter_sequence[] = { static int dissect_ldap_SubstringFilter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 658 "../../asn1/ldap/ldap.cnf" +#line 656 "../../asn1/ldap/ldap.cnf" proto_tree *tr=NULL; proto_item *it=NULL; const char *old_substring_value=substring_value; @@ -2081,7 +2078,7 @@ static int dissect_ldap_T_greaterOrEqual(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ldap_AttributeValueAssertion(implicit_tag, tvb, offset, actx, tree, hf_index); -#line 545 "../../asn1/ldap/ldap.cnf" +#line 543 "../../asn1/ldap/ldap.cnf" Filter_string=wmem_strdup_printf(wmem_packet_scope(), "(%s>=%s)", string_or_null(attributedesc_string), string_or_null(ldapvalue_string)); @@ -2097,7 +2094,7 @@ static int dissect_ldap_T_lessOrEqual(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ldap_AttributeValueAssertion(implicit_tag, tvb, offset, actx, tree, hf_index); -#line 551 "../../asn1/ldap/ldap.cnf" +#line 549 "../../asn1/ldap/ldap.cnf" Filter_string=wmem_strdup_printf(wmem_packet_scope(), "(%s<=%s)", string_or_null(attributedesc_string), string_or_null(ldapvalue_string)); @@ -2113,7 +2110,7 @@ static int dissect_ldap_T_present(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ldap_AttributeDescription(implicit_tag, tvb, offset, actx, tree, hf_index); -#line 615 "../../asn1/ldap/ldap.cnf" +#line 613 "../../asn1/ldap/ldap.cnf" Filter_string=wmem_strdup_printf(wmem_packet_scope(), "(%s=*)",string_or_null(Filter_string)); @@ -2126,7 +2123,7 @@ static int dissect_ldap_T_approxMatch(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ldap_AttributeValueAssertion(implicit_tag, tvb, offset, actx, tree, hf_index); -#line 557 "../../asn1/ldap/ldap.cnf" +#line 555 "../../asn1/ldap/ldap.cnf" Filter_string=wmem_strdup_printf(wmem_packet_scope(), "(%s~=%s)", string_or_null(attributedesc_string), string_or_null(ldapvalue_string)); @@ -2148,7 +2145,7 @@ dissect_ldap_MatchingRuleId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of static int dissect_ldap_T_dnAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 621 "../../asn1/ldap/ldap.cnf" +#line 619 "../../asn1/ldap/ldap.cnf" gboolean val; offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, &val); @@ -2183,7 +2180,7 @@ dissect_ldap_MatchingRuleAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_ldap_T_extensibleMatch(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 630 "../../asn1/ldap/ldap.cnf" +#line 628 "../../asn1/ldap/ldap.cnf" attr_type=NULL; matching_rule_string=NULL; ldapvalue_string=NULL; @@ -2192,7 +2189,7 @@ dissect_ldap_T_extensibleMatch(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset = dissect_ldap_MatchingRuleAssertion(implicit_tag, tvb, offset, actx, tree, hf_index); -#line 636 "../../asn1/ldap/ldap.cnf" +#line 634 "../../asn1/ldap/ldap.cnf" Filter_string=wmem_strdup_printf(wmem_packet_scope(), "(%s:%s%s%s=%s)", (attr_type?attr_type:""), (matching_rule_dnattr?"dn:":""), @@ -2235,7 +2232,7 @@ static const ber_choice_t Filter_choice[] = { static int dissect_ldap_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 680 "../../asn1/ldap/ldap.cnf" +#line 678 "../../asn1/ldap/ldap.cnf" proto_tree *tr=NULL; proto_item *it=NULL; attributedesc_string=NULL; @@ -2271,7 +2268,7 @@ dissect_ldap_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_ static int dissect_ldap_T_filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 528 "../../asn1/ldap/ldap.cnf" +#line 526 "../../asn1/ldap/ldap.cnf" Filter_string=NULL; Filter_elements = 0; Filter_length = 0; @@ -2279,7 +2276,7 @@ dissect_ldap_T_filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _ offset = dissect_ldap_Filter(implicit_tag, tvb, offset, actx, tree, hf_index); -#line 533 "../../asn1/ldap/ldap.cnf" +#line 531 "../../asn1/ldap/ldap.cnf" Filter_string=NULL; and_filter_string=NULL; Filter_elements = 0; @@ -2337,7 +2334,7 @@ dissect_ldap_SearchRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off static int dissect_ldap_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 458 "../../asn1/ldap/ldap.cnf" +#line 456 "../../asn1/ldap/ldap.cnf" tvbuff_t *next_tvb = NULL; gchar *string; @@ -2497,7 +2494,7 @@ static const value_string ldap_T_resultCode_vals[] = { static int dissect_ldap_T_resultCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 426 "../../asn1/ldap/ldap.cnf" +#line 424 "../../asn1/ldap/ldap.cnf" const gchar *valstr; @@ -2564,7 +2561,7 @@ dissect_ldap_SEQUENCE_OF_LDAPURL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i static int dissect_ldap_SearchResultReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 821 "../../asn1/ldap/ldap.cnf" +#line 819 "../../asn1/ldap/ldap.cnf" offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, hf_index, BER_CLASS_APP, 19, TRUE, dissect_ldap_SEQUENCE_OF_LDAPURL); @@ -2841,7 +2838,7 @@ dissect_ldap_CompareResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o static int dissect_ldap_AbandonRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 828 "../../asn1/ldap/ldap.cnf" +#line 826 "../../asn1/ldap/ldap.cnf" offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, hf_index, BER_CLASS_APP, 16, TRUE, dissect_ldap_MessageID); @@ -2858,7 +2855,7 @@ dissect_ldap_AbandonRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of static int dissect_ldap_LDAPOID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 54 "../../asn1/ldap/ldap.cnf" +#line 53 "../../asn1/ldap/ldap.cnf" tvbuff_t *parameter_tvb; const gchar *name; @@ -2867,7 +2864,7 @@ dissect_ldap_LDAPOID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); -#line 61 "../../asn1/ldap/ldap.cnf" +#line 60 "../../asn1/ldap/ldap.cnf" object_identifier_id = NULL; @@ -2892,7 +2889,7 @@ dissect_ldap_LDAPOID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U /* we have agreed start_tls */ ldap_conv_info_t *ldap_info = NULL; - ldap_info = (ldap_conv_info_t *)actx->pinfo->private_data; + ldap_info = (ldap_conv_info_t *)actx->private_data; if(ldap_info) { if(hf_index == hf_ldap_responseName) @@ -2912,7 +2909,7 @@ dissect_ldap_LDAPOID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U static int dissect_ldap_T_requestValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 753 "../../asn1/ldap/ldap.cnf" +#line 751 "../../asn1/ldap/ldap.cnf" if((object_identifier_id != NULL) && oid_has_dissector(object_identifier_id)) { offset = call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, NULL); @@ -3061,12 +3058,12 @@ dissect_ldap_ExtendedResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int static int dissect_ldap_T_intermediateResponse_responseValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 761 "../../asn1/ldap/ldap.cnf" +#line 759 "../../asn1/ldap/ldap.cnf" const gchar *name; -#line 765 "../../asn1/ldap/ldap.cnf" +#line 763 "../../asn1/ldap/ldap.cnf" if(ldm_tree && object_identifier_id) { proto_item_set_text(ldm_tree, "%s %s", "IntermediateResponse", object_identifier_id); name = oid_resolved_from_string(object_identifier_id); @@ -3164,10 +3161,10 @@ static const ber_choice_t ProtocolOp_choice[] = { static int dissect_ldap_ProtocolOp(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 106 "../../asn1/ldap/ldap.cnf" +#line 105 "../../asn1/ldap/ldap.cnf" ldap_call_response_t *lcrp; - ldap_conv_info_t *ldap_info = (ldap_conv_info_t *)actx->pinfo->private_data; + ldap_conv_info_t *ldap_info = (ldap_conv_info_t *)actx->private_data; do_protocolop = TRUE; @@ -3175,7 +3172,7 @@ dissect_ldap_ProtocolOp(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset ProtocolOp_choice, hf_index, ett_ldap_ProtocolOp, &ProtocolOp); -#line 112 "../../asn1/ldap/ldap.cnf" +#line 111 "../../asn1/ldap/ldap.cnf" if (ProtocolOp == -1) { return offset; @@ -3184,7 +3181,7 @@ dissect_ldap_ProtocolOp(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset /* ProtocolOp is the index, not the tag so convert it to the tag value */ ProtocolOp = ldap_ProtocolOp_vals[ProtocolOp].value; - lcrp=ldap_match_call_response(tvb, actx->pinfo, tree, MessageID, ProtocolOp); + lcrp=ldap_match_call_response(tvb, actx->pinfo, tree, MessageID, ProtocolOp, ldap_info); if(lcrp){ tap_queue_packet(ldap_tap, actx->pinfo, lcrp); } @@ -3231,6 +3228,7 @@ dissect_ldap_ProtocolOp(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset } + return offset; } @@ -3247,7 +3245,7 @@ dissect_ldap_ControlType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse static int dissect_ldap_T_controlValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 734 "../../asn1/ldap/ldap.cnf" +#line 732 "../../asn1/ldap/ldap.cnf" gint8 ber_class; gboolean pc, ind; gint32 tag; @@ -3432,7 +3430,7 @@ dissect_ldap_DirSyncFlagsSubEntry(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_ldap_DirSyncFlags(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 778 "../../asn1/ldap/ldap.cnf" +#line 776 "../../asn1/ldap/ldap.cnf" gint8 ber_class; gboolean pc; gint32 tag; @@ -3778,11 +3776,6 @@ dissect_ldap_PasswordPolicyResponseValue(gboolean implicit_tag _U_, tvbuff_t *tv /*--- PDUs ---*/ -static void dissect_LDAPMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { - asn1_ctx_t asn1_ctx; - asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); - dissect_ldap_LDAPMessage(FALSE, tvb, 0, &asn1_ctx, tree, hf_ldap_LDAPMessage_PDU); -} static void dissect_SearchControlValue_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); @@ -3842,6 +3835,16 @@ static void dissect_PasswordPolicyResponseValue_PDU(tvbuff_t *tvb _U_, packet_in /*--- End of included file: packet-ldap-fn.c ---*/ #line 882 "../../asn1/ldap/packet-ldap-template.c" +static int dissect_LDAPMessage_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ldap_conv_info_t *ldap_info) { + + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + + asn1_ctx.private_data = ldap_info; + offset = dissect_ldap_LDAPMessage(FALSE, tvb, offset, &asn1_ctx, tree, hf_ldap_LDAPMessage_PDU); + return offset; +} static void dissect_ldap_payload(tvbuff_t *tvb, packet_info *pinfo, @@ -3927,8 +3930,7 @@ one_more_pdu: * Now dissect the LDAP message. */ ldap_info->is_mscldap = is_mscldap; - pinfo->private_data = ldap_info; - dissect_LDAPMessage_PDU(msg_tvb, pinfo, tree); + dissect_LDAPMessage_PDU(msg_tvb, pinfo, tree, ldap_info); offset += msg_len; @@ -5195,13 +5197,12 @@ void proto_register_ldap(void) { { &hf_ldap_AccessMask_ADS_CONTROL_ACCESS, { "Control Access", "ldap.AccessMask.ADS_CONTROL_ACCESS", FT_BOOLEAN, 32, TFS(&ldap_AccessMask_ADS_CONTROL_ACCESS_tfs), LDAP_ACCESSMASK_ADS_CONTROL_ACCESS, NULL, HFILL }}, + { &hf_ldap_LDAPMessage_PDU, + { "LDAPMessage", "ldap.LDAPMessage_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + /*--- Included file: packet-ldap-hfarr.c ---*/ #line 1 "../../asn1/ldap/packet-ldap-hfarr.c" - { &hf_ldap_LDAPMessage_PDU, - { "LDAPMessage", "ldap.LDAPMessage_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, { &hf_ldap_SearchControlValue_PDU, { "SearchControlValue", "ldap.SearchControlValue_element", FT_NONE, BASE_NONE, NULL, 0, @@ -5776,7 +5777,7 @@ void proto_register_ldap(void) { NULL, HFILL }}, /*--- End of included file: packet-ldap-hfarr.c ---*/ -#line 2236 "../../asn1/ldap/packet-ldap-template.c" +#line 2248 "../../asn1/ldap/packet-ldap-template.c" }; /* List of subtrees */ @@ -5851,7 +5852,7 @@ void proto_register_ldap(void) { &ett_ldap_T_warning, /*--- End of included file: packet-ldap-ettarr.c ---*/ -#line 2249 "../../asn1/ldap/packet-ldap-template.c" +#line 2261 "../../asn1/ldap/packet-ldap-template.c" }; /* UAT for header fields */ static uat_field_t custom_attribute_types_uat_fields[] = { @@ -6017,7 +6018,7 @@ proto_reg_handoff_ldap(void) /*--- End of included file: packet-ldap-dis-tab.c ---*/ -#line 2398 "../../asn1/ldap/packet-ldap-template.c" +#line 2410 "../../asn1/ldap/packet-ldap-template.c" } -- cgit v1.2.3