diff options
author | Michael Mann <mmann78@netscape.net> | 2013-11-08 02:02:43 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-11-08 02:02:43 +0000 |
commit | d62f92b7f1ab7db4f1ca5c2608598c5760183a76 (patch) | |
tree | 4f0ca13812518219fb8b6e06817bd019152a2fb5 /asn1 | |
parent | c4e9865f0c6d03b7b60cff1de4ad5c4049a2e923 (diff) |
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
Diffstat (limited to 'asn1')
-rw-r--r-- | asn1/h245/h245.cnf | 1 | ||||
-rw-r--r-- | asn1/ldap/ldap.cnf | 26 | ||||
-rw-r--r-- | asn1/ldap/packet-ldap-template.c | 20 |
3 files changed, 28 insertions, 19 deletions
diff --git a/asn1/h245/h245.cnf b/asn1/h245/h245.cnf index 5993b4dd6c..1232c02b86 100644 --- a/asn1/h245/h245.cnf +++ b/asn1/h245/h245.cnf @@ -697,7 +697,6 @@ if (h245_pi != NULL) gefx = gef_ctx_get(actx->private_data); if (gefx) { /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %%s", gefx->key);*/ - actx->pinfo->private_data = actx; dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s); } actx->private_data = parent_gefx; diff --git a/asn1/ldap/ldap.cnf b/asn1/ldap/ldap.cnf index 5b348c160d..abdb20e631 100644 --- a/asn1/ldap/ldap.cnf +++ b/asn1/ldap/ldap.cnf @@ -4,8 +4,7 @@ # $Id$ -#.PDU -LDAPMessage +#.PDU_NEW #.TYPE_RENAME @@ -82,7 +81,7 @@ PasswordPolicyResponseValue B "1.3.6.1.4.1.42.2.27.8.5.1" "passwordPolicy" /* 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) @@ -105,7 +104,7 @@ PasswordPolicyResponseValue B "1.3.6.1.4.1.42.2.27.8.5.1" "passwordPolicy" #.FN_HDR ProtocolOp 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; #.FN_FTR ProtocolOp @@ -117,7 +116,7 @@ PasswordPolicyResponseValue B "1.3.6.1.4.1.42.2.27.8.5.1" "passwordPolicy" /* 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); } @@ -163,23 +162,22 @@ PasswordPolicyResponseValue B "1.3.6.1.4.1.42.2.27.8.5.1" "passwordPolicy" ldap_info->start_tls_pending = FALSE; } + #.FN_BODY Simple ldap_conv_info_t *ldap_info; %(DEFAULT_BODY)s - 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; - #.FN_BODY Mechanism VAL_PTR = ¶meter_tvb ldap_conv_info_t *ldap_info; tvbuff_t *parameter_tvb; char *mechanism = NULL; %(DEFAULT_BODY)s - 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) @@ -206,7 +204,6 @@ char *mechanism = NULL; g_free(ldap_info->auth_mech); ldap_info->auth_mech = mechanism; } - actx->pinfo->private_data = ldap_info; } #.FN_BODY Credentials VAL_PTR = ¶meter_tvb @@ -221,7 +218,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)) {*/ @@ -245,7 +242,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; #.FN_BODY ServerSaslCreds VAL_PTR = ¶meter_tvb @@ -256,7 +254,7 @@ ldap_conv_info_t *ldap_info; %(DEFAULT_BODY)s 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. */ @@ -316,7 +314,7 @@ ldap_conv_info_t *ldap_info; } break; } - actx->pinfo->private_data = ldap_info; + actx->private_data = ldap_info; #.FN_BODY LDAPString VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; diff --git a/asn1/ldap/packet-ldap-template.c b/asn1/ldap/packet-ldap-template.c index 33b32f31ad..d9cc0d1e89 100644 --- a/asn1/ldap/packet-ldap-template.c +++ b/asn1/ldap/packet-ldap-template.c @@ -183,6 +183,7 @@ 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; #include "packet-ldap-hf.c" @@ -744,10 +745,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 */ @@ -879,6 +879,16 @@ ldap_match_call_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu } #include "packet-ldap-fn.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, @@ -964,8 +974,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; @@ -2232,6 +2241,9 @@ 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 }}, + #include "packet-ldap-hfarr.c" }; |