aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgal <gal@f5534014-38df-0310-8fa8-9805f1628bb7>2010-06-29 18:07:33 +0000
committergal <gal@f5534014-38df-0310-8fa8-9805f1628bb7>2010-06-29 18:07:33 +0000
commit23f994f7e9842dd6b0af30274555654a022f7f4f (patch)
treeb1a19c40be8f9ba71ebbc0e69b318186069dfd1f
parent67ce815cf2a848946380f5f0d6baf34f774ce133 (diff)
Decode parameters as ASN.1 directly and avoid interpreting as an OCTET STRING.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@33374 f5534014-38df-0310-8fa8-9805f1628bb7
-rw-r--r--asn1/ansi_tcap/ansi_tcap.cnf35
-rw-r--r--epan/dissectors/packet-ansi_tcap.c65
2 files changed, 30 insertions, 70 deletions
diff --git a/asn1/ansi_tcap/ansi_tcap.cnf b/asn1/ansi_tcap/ansi_tcap.cnf
index 23c5092269..079c9f4d9f 100644
--- a/asn1/ansi_tcap/ansi_tcap.cnf
+++ b/asn1/ansi_tcap/ansi_tcap.cnf
@@ -18,18 +18,12 @@ OperationCode/private VAL_PTR = &ansi_tcap_private.d.OperationCode_private
#.END
#--- INVOKE ---
-#.FIELD_ATTR
-Invoke/parameter TYPE = FT_BYTES DISPLAY = BASE_NONE
#.FN_BODY Invoke/parameter
-tvbuff_t *parameter_tvb;
- offset = dissect_ber_octet_string(TRUE, actx, tree, tvb, offset, hf_index,
- &parameter_tvb);
- if(!parameter_tvb)
- return offset;
+ if(find_tcap_subdissector(tvb, actx, tree))
+ offset = tvb_length(tvb);
- find_tcap_subdissector(parameter_tvb, actx, tree);
#.FN_HDR Invoke
ansi_tcap_private.d.pdu = 1;
@@ -37,18 +31,10 @@ tvbuff_t *parameter_tvb;
#--- RETURN RESULT ---
#.FIELD_ATTR
-ReturnResult/parameter TYPE = FT_BYTES DISPLAY = BASE_NONE
#.FN_BODY ReturnResult/parameter
-tvbuff_t *parameter_tvb;
-
-
- offset = dissect_ber_octet_string(TRUE, actx, tree, tvb, offset, hf_index,
- &parameter_tvb);
- if(!parameter_tvb)
- return offset;
-
- find_tcap_subdissector(parameter_tvb, actx, tree);
+ if(find_tcap_subdissector(tvb, actx, tree))
+ offset = tvb_length(tvb);
#.FN_HDR ReturnResult
ansi_tcap_private.d.pdu = 2;
@@ -56,18 +42,9 @@ tvbuff_t *parameter_tvb;
#--- RETURN ERROR ---
-#.FIELD_ATTR
-ReturnError/parameter TYPE = FT_BYTES DISPLAY = BASE_NONE
-
#.FN_BODY ReturnError/parameter
-tvbuff_t *parameter_tvb;
-
- offset = dissect_ber_octet_string(TRUE, actx, tree, tvb, offset, hf_index,
- &parameter_tvb);
- if(!parameter_tvb)
- return offset;
-
- find_tcap_subdissector(parameter_tvb, actx, tree);
+ if(find_tcap_subdissector(tvb, actx, tree))
+ offset = tvb_length(tvb);
#.FN_HDR ReturnError
ansi_tcap_private.d.pdu = 3;
diff --git a/epan/dissectors/packet-ansi_tcap.c b/epan/dissectors/packet-ansi_tcap.c
index ac44f5b78b..0b49a68000 100644
--- a/epan/dissectors/packet-ansi_tcap.c
+++ b/epan/dissectors/packet-ansi_tcap.c
@@ -491,7 +491,7 @@ dissect_ansi_tcap_ErrorCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_ansi_tcap_TransactionID_U(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 113 "ansi_tcap.cnf"
+#line 90 "ansi_tcap.cnf"
tvbuff_t *next_tvb;
guint8 len;
@@ -590,7 +590,7 @@ dissect_ansi_tcap_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
static int
dissect_ansi_tcap_ObjectIDApplicationContext(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 77 "ansi_tcap.cnf"
+#line 54 "ansi_tcap.cnf"
static const char * oid_str;
@@ -759,15 +759,11 @@ dissect_ansi_tcap_T_componentIDs(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
static int
dissect_ansi_tcap_T_parameter(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 25 "ansi_tcap.cnf"
-tvbuff_t *parameter_tvb;
+#line 23 "ansi_tcap.cnf"
- offset = dissect_ber_octet_string(TRUE, actx, tree, tvb, offset, hf_index,
- &parameter_tvb);
- if(!parameter_tvb)
- return offset;
+ if(find_tcap_subdissector(tvb, actx, tree))
+ offset = tvb_length(tvb);
- find_tcap_subdissector(parameter_tvb, actx, tree);
@@ -784,7 +780,7 @@ static const ber_sequence_t Invoke_sequence[] = {
static int
dissect_ansi_tcap_Invoke(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 35 "ansi_tcap.cnf"
+#line 29 "ansi_tcap.cnf"
ansi_tcap_private.d.pdu = 1;
@@ -809,16 +805,9 @@ dissect_ansi_tcap_T_componentID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_ansi_tcap_T_parameter_01(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 43 "ansi_tcap.cnf"
-tvbuff_t *parameter_tvb;
-
-
- offset = dissect_ber_octet_string(TRUE, actx, tree, tvb, offset, hf_index,
- &parameter_tvb);
- if(!parameter_tvb)
- return offset;
-
- find_tcap_subdissector(parameter_tvb, actx, tree);
+#line 36 "ansi_tcap.cnf"
+ if(find_tcap_subdissector(tvb, actx, tree))
+ offset = tvb_length(tvb);
@@ -834,7 +823,7 @@ static const ber_sequence_t ReturnResult_sequence[] = {
static int
dissect_ansi_tcap_ReturnResult(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 "ansi_tcap.cnf"
+#line 40 "ansi_tcap.cnf"
ansi_tcap_private.d.pdu = 2;
@@ -860,15 +849,9 @@ dissect_ansi_tcap_T_componentID_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_ansi_tcap_T_parameter_02(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 63 "ansi_tcap.cnf"
-tvbuff_t *parameter_tvb;
-
- offset = dissect_ber_octet_string(TRUE, actx, tree, tvb, offset, hf_index,
- &parameter_tvb);
- if(!parameter_tvb)
- return offset;
-
- find_tcap_subdissector(parameter_tvb, actx, tree);
+#line 46 "ansi_tcap.cnf"
+ if(find_tcap_subdissector(tvb, actx, tree))
+ offset = tvb_length(tvb);
@@ -885,7 +868,7 @@ static const ber_sequence_t ReturnError_sequence[] = {
static int
dissect_ansi_tcap_ReturnError(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 73 "ansi_tcap.cnf"
+#line 50 "ansi_tcap.cnf"
ansi_tcap_private.d.pdu = 3;
@@ -1078,7 +1061,7 @@ dissect_ansi_tcap_UniTransactionPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
static int
dissect_ansi_tcap_T_unidirectional(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 85 "ansi_tcap.cnf"
+#line 62 "ansi_tcap.cnf"
gp_tcapsrt_info->ope=TC_ANSI_ALL;
col_set_str(actx->pinfo->cinfo, COL_INFO, "unidirectional ");
@@ -1108,7 +1091,7 @@ dissect_ansi_tcap_TransactionPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
static int
dissect_ansi_tcap_T_queryWithPerm(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 89 "ansi_tcap.cnf"
+#line 66 "ansi_tcap.cnf"
gp_tcapsrt_info->ope=TC_ANSI_ALL;
col_set_str(actx->pinfo->cinfo, COL_INFO, "queryWithPerm ");
@@ -1122,7 +1105,7 @@ col_set_str(actx->pinfo->cinfo, COL_INFO, "queryWithPerm ");
static int
dissect_ansi_tcap_T_queryWithoutPerm(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 93 "ansi_tcap.cnf"
+#line 70 "ansi_tcap.cnf"
gp_tcapsrt_info->ope=TC_ANSI_ALL;
col_set_str(actx->pinfo->cinfo, COL_INFO, "queryWithoutPerm ");
@@ -1136,7 +1119,7 @@ col_set_str(actx->pinfo->cinfo, COL_INFO, "queryWithoutPerm ");
static int
dissect_ansi_tcap_T_response(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 97 "ansi_tcap.cnf"
+#line 74 "ansi_tcap.cnf"
gp_tcapsrt_info->ope=TC_ANSI_ALL;
col_set_str(actx->pinfo->cinfo, COL_INFO, "response ");
@@ -1150,7 +1133,7 @@ col_set_str(actx->pinfo->cinfo, COL_INFO, "response ");
static int
dissect_ansi_tcap_T_conversationWithPerm(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 101 "ansi_tcap.cnf"
+#line 78 "ansi_tcap.cnf"
gp_tcapsrt_info->ope=TC_ANSI_ALL;
col_set_str(actx->pinfo->cinfo, COL_INFO, "conversationWithPerm ");
@@ -1164,7 +1147,7 @@ col_set_str(actx->pinfo->cinfo, COL_INFO, "conversationWithPerm ");
static int
dissect_ansi_tcap_T_conversationWithoutPerm(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 105 "ansi_tcap.cnf"
+#line 82 "ansi_tcap.cnf"
gp_tcapsrt_info->ope=TC_ANSI_ALL;
col_set_str(actx->pinfo->cinfo, COL_INFO, "conversationWithoutPerm ");
@@ -1260,7 +1243,7 @@ dissect_ansi_tcap_Abort(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_ansi_tcap_T_abort(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 109 "ansi_tcap.cnf"
+#line 86 "ansi_tcap.cnf"
gp_tcapsrt_info->ope=TC_ANSI_ABORT;
col_set_str(actx->pinfo->cinfo, COL_INFO, "Abort ");
@@ -1587,7 +1570,7 @@ proto_register_ansi_tcap(void)
NULL, HFILL }},
{ &hf_ansi_tcap_parameter,
{ "parameter", "ansi_tcap.parameter",
- FT_BYTES, BASE_NONE, NULL, 0,
+ FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_ansi_tcap_componentID,
{ "componentID", "ansi_tcap.componentID",
@@ -1595,7 +1578,7 @@ proto_register_ansi_tcap(void)
NULL, HFILL }},
{ &hf_ansi_tcap_parameter_01,
{ "parameter", "ansi_tcap.parameter",
- FT_BYTES, BASE_NONE, NULL, 0,
+ FT_NONE, BASE_NONE, NULL, 0,
"T_parameter_01", HFILL }},
{ &hf_ansi_tcap_componentID_01,
{ "componentID", "ansi_tcap.componentID",
@@ -1607,7 +1590,7 @@ proto_register_ansi_tcap(void)
NULL, HFILL }},
{ &hf_ansi_tcap_parameter_02,
{ "parameter", "ansi_tcap.parameter",
- FT_BYTES, BASE_NONE, NULL, 0,
+ FT_NONE, BASE_NONE, NULL, 0,
"T_parameter_02", HFILL }},
{ &hf_ansi_tcap_componentID_02,
{ "componentID", "ansi_tcap.componentID",