aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-11-08 02:02:43 +0000
committerMichael Mann <mmann78@netscape.net>2013-11-08 02:02:43 +0000
commitd62f92b7f1ab7db4f1ca5c2608598c5760183a76 (patch)
tree4f0ca13812518219fb8b6e06817bd019152a2fb5 /asn1
parentc4e9865f0c6d03b7b60cff1de4ad5c4049a2e923 (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.cnf1
-rw-r--r--asn1/ldap/ldap.cnf26
-rw-r--r--asn1/ldap/packet-ldap-template.c20
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 = &parameter_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 = &parameter_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 = &parameter_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 = &parameter_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"
};