aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2016-10-03 23:30:02 +0200
committerStig Bjørlykke <stig@bjorlykke.org>2016-10-03 21:30:41 +0000
commita68dd39a01d7490383f306f2dc35fb8f079b8c69 (patch)
tree61d8d586f6a6ab9a4589aaaca87ca654d743549b
parent650c0f93be4765c8a2dc2db035fe1d0542a047c3 (diff)
p1: Handle implicit Content
The retured-content is defined as IMPLICIT Content (octet string), so ensure we handle this correctly. Bug: 12976 Change-Id: I4bcce67cea97142bf3312e1a5c2aeb169c7a69d2 Reviewed-on: https://code.wireshark.org/review/18054 Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
-rw-r--r--epan/dissectors/asn1/p1/p1.cnf5
-rw-r--r--epan/dissectors/packet-p1.c129
2 files changed, 67 insertions, 67 deletions
diff --git a/epan/dissectors/asn1/p1/p1.cnf b/epan/dissectors/asn1/p1/p1.cnf
index 06b8d1a86c..1a1830ddf1 100644
--- a/epan/dissectors/asn1/p1/p1.cnf
+++ b/epan/dissectors/asn1/p1/p1.cnf
@@ -673,12 +673,11 @@ MessageToken B "2.6.1.7.36" "id-hat-forwarded-token"
break;
}
-#.FN_BODY Content
+#.FN_BODY Content VAL_PTR = &next_tvb
tvbuff_t *next_tvb;
p1_address_ctx_t* ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
- /* we can do this now constructed octet strings are supported */
- offset = dissect_ber_octet_string(FALSE, actx, tree, tvb, offset, hf_index, &next_tvb);
+ %(DEFAULT_BODY)s
if (next_tvb) {
proto_item_set_text(actx->created_item, "content (%%u bytes)", tvb_reported_length (next_tvb));
diff --git a/epan/dissectors/packet-p1.c b/epan/dissectors/packet-p1.c
index be5ccc5dfd..11011cd91d 100644
--- a/epan/dissectors/packet-p1.c
+++ b/epan/dissectors/packet-p1.c
@@ -979,7 +979,7 @@ dissect_p1_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, as
static int
dissect_p1_MTAName(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 705 "./asn1/p1/p1.cnf"
+#line 704 "./asn1/p1/p1.cnf"
tvbuff_t *mtaname = NULL;
p1_address_ctx_t* ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
@@ -1057,7 +1057,7 @@ dissect_p1_TokenTypeIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_TokenTypeData(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 1165 "./asn1/p1/p1.cnf"
+#line 1164 "./asn1/p1/p1.cnf"
if(actx->external.direct_reference)
call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, actx->private_data);
@@ -1168,7 +1168,7 @@ static const ber_choice_t Credentials_choice[] = {
int
dissect_p1_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 1173 "./asn1/p1/p1.cnf"
+#line 1172 "./asn1/p1/p1.cnf"
gint credentials = -1;
offset = dissect_ber_choice(actx, tree, tvb, offset,
@@ -1427,7 +1427,7 @@ static const value_string p1_MTABindError_vals[] = {
static int
dissect_p1_MTABindError(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 1156 "./asn1/p1/p1.cnf"
+#line 1155 "./asn1/p1/p1.cnf"
int error = -1;
offset = dissect_ber_constrained_integer(implicit_tag, actx, tree, tvb, offset,
0U, ub_integer_options, hf_index, &error);
@@ -1444,7 +1444,7 @@ dissect_p1_MTABindError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_p1_T_x121_dcc_code(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 853 "./asn1/p1/p1.cnf"
+#line 852 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@@ -1463,7 +1463,7 @@ dissect_p1_T_x121_dcc_code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_p1_T_iso_3166_alpha2_code(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 811 "./asn1/p1/p1.cnf"
+#line 810 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -1520,7 +1520,7 @@ dissect_p1_CountryName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_p1_T_numeric(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 860 "./asn1/p1/p1.cnf"
+#line 859 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@@ -1539,7 +1539,7 @@ dissect_p1_T_numeric(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U
static int
dissect_p1_T_printable(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 818 "./asn1/p1/p1.cnf"
+#line 817 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -1596,7 +1596,7 @@ dissect_p1_AdministrationDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
static int
dissect_p1_T_numeric_private_domain_identifier(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 874 "./asn1/p1/p1.cnf"
+#line 873 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@@ -1615,7 +1615,7 @@ dissect_p1_T_numeric_private_domain_identifier(gboolean implicit_tag _U_, tvbuff
static int
dissect_p1_T_printable_private_domain_identifier(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 832 "./asn1/p1/p1.cnf"
+#line 831 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -1645,7 +1645,7 @@ static const ber_choice_t PrivateDomainIdentifier_choice[] = {
static int
dissect_p1_PrivateDomainIdentifier(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 745 "./asn1/p1/p1.cnf"
+#line 744 "./asn1/p1/p1.cnf"
do_address("/P=", NULL, actx);
@@ -1679,7 +1679,7 @@ dissect_p1_GlobalDomainIdentifier_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
static int
dissect_p1_GlobalDomainIdentifier(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 1035 "./asn1/p1/p1.cnf"
+#line 1034 "./asn1/p1/p1.cnf"
p1_address_ctx_t* ctx;
if (actx->subtree.tree_ctx == NULL) {
@@ -1713,7 +1713,7 @@ dissect_p1_GlobalDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_p1_LocalIdentifier(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 1061 "./asn1/p1/p1.cnf"
+#line 1060 "./asn1/p1/p1.cnf"
tvbuff_t *id = NULL;
p1_address_ctx_t* ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
@@ -1754,7 +1754,7 @@ dissect_p1_MTSIdentifier_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_p1_MTSIdentifier(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 1075 "./asn1/p1/p1.cnf"
+#line 1074 "./asn1/p1/p1.cnf"
set_do_address(actx, TRUE);
@@ -1773,7 +1773,7 @@ dissect_p1_MTSIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
static int
dissect_p1_MessageIdentifier(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 1030 "./asn1/p1/p1.cnf"
+#line 1029 "./asn1/p1/p1.cnf"
actx->subtree.tree = NULL;
offset = dissect_p1_MTSIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -1788,7 +1788,7 @@ dissect_p1_MessageIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_p1_X121Address(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 722 "./asn1/p1/p1.cnf"
+#line 721 "./asn1/p1/p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@@ -1816,7 +1816,7 @@ dissect_p1_NetworkAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
static int
dissect_p1_TerminalIdentifier(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 732 "./asn1/p1/p1.cnf"
+#line 731 "./asn1/p1/p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -1835,7 +1835,7 @@ dissect_p1_TerminalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_T_numeric_private_domain_name(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 867 "./asn1/p1/p1.cnf"
+#line 866 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@@ -1854,7 +1854,7 @@ dissect_p1_T_numeric_private_domain_name(gboolean implicit_tag _U_, tvbuff_t *tv
static int
dissect_p1_T_printable_private_domain_name(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 825 "./asn1/p1/p1.cnf"
+#line 824 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -1884,7 +1884,7 @@ static const ber_choice_t PrivateDomainName_choice[] = {
static int
dissect_p1_PrivateDomainName(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 739 "./asn1/p1/p1.cnf"
+#line 738 "./asn1/p1/p1.cnf"
do_address("/P=", NULL, actx);
@@ -1902,7 +1902,7 @@ dissect_p1_PrivateDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_p1_OrganizationName(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 754 "./asn1/p1/p1.cnf"
+#line 753 "./asn1/p1/p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -1932,7 +1932,7 @@ dissect_p1_NumericUserIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
static int
dissect_p1_T_printable_surname(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 915 "./asn1/p1/p1.cnf"
+#line 914 "./asn1/p1/p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -1951,7 +1951,7 @@ dissect_p1_T_printable_surname(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_T_printable_given_name(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 922 "./asn1/p1/p1.cnf"
+#line 921 "./asn1/p1/p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -1970,7 +1970,7 @@ dissect_p1_T_printable_given_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_p1_T_printable_initials(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 929 "./asn1/p1/p1.cnf"
+#line 928 "./asn1/p1/p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -1989,7 +1989,7 @@ dissect_p1_T_printable_initials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_p1_T_printable_generation_qualifier(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 936 "./asn1/p1/p1.cnf"
+#line 935 "./asn1/p1/p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -2025,7 +2025,7 @@ dissect_p1_PersonalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_p1_OrganizationalUnitName(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 774 "./asn1/p1/p1.cnf"
+#line 773 "./asn1/p1/p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -2069,7 +2069,7 @@ static const ber_sequence_t BuiltInStandardAttributes_sequence[] = {
static int
dissect_p1_BuiltInStandardAttributes(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 1092 "./asn1/p1/p1.cnf"
+#line 1091 "./asn1/p1/p1.cnf"
actx->subtree.tree = tree;
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -2085,7 +2085,7 @@ dissect_p1_BuiltInStandardAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U
static int
dissect_p1_T_printable_type(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 971 "./asn1/p1/p1.cnf"
+#line 970 "./asn1/p1/p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -2104,7 +2104,7 @@ dissect_p1_T_printable_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_p1_T_printable_value(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 978 "./asn1/p1/p1.cnf"
+#line 977 "./asn1/p1/p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -2128,7 +2128,7 @@ static const ber_sequence_t BuiltInDomainDefinedAttribute_sequence[] = {
static int
dissect_p1_BuiltInDomainDefinedAttribute(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 985 "./asn1/p1/p1.cnf"
+#line 984 "./asn1/p1/p1.cnf"
actx->value_ptr = wmem_strbuf_new(wmem_packet_scope(), "");
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -2286,7 +2286,7 @@ dissect_p1_ORName_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_
int
dissect_p1_ORName(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 1011 "./asn1/p1/p1.cnf"
+#line 1010 "./asn1/p1/p1.cnf"
p1_address_ctx_t* ctx;
if (actx->subtree.tree_ctx == NULL) {
@@ -2679,7 +2679,7 @@ dissect_p1_PerMessageIndicators(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_p1_Time(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 1134 "./asn1/p1/p1.cnf"
+#line 1133 "./asn1/p1/p1.cnf"
tvbuff_t *arrival = NULL;
p1_address_ctx_t* ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
@@ -2744,7 +2744,7 @@ dissect_p1_T_bilateral_domain(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_T_bilateral_information(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 1200 "./asn1/p1/p1.cnf"
+#line 1199 "./asn1/p1/p1.cnf"
proto_item *item = NULL;
int loffset = 0;
guint32 len = 0;
@@ -2812,7 +2812,7 @@ static const value_string p1_RoutingAction_vals[] = {
static int
dissect_p1_RoutingAction(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 1146 "./asn1/p1/p1.cnf"
+#line 1145 "./asn1/p1/p1.cnf"
int action = 0;
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -2873,7 +2873,7 @@ static const ber_sequence_t DomainSuppliedInformation_set[] = {
static int
dissect_p1_DomainSuppliedInformation(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 1113 "./asn1/p1/p1.cnf"
+#line 1112 "./asn1/p1/p1.cnf"
set_do_address(actx, FALSE);
@@ -2898,7 +2898,7 @@ static const ber_sequence_t TraceInformationElement_sequence[] = {
static int
dissect_p1_TraceInformationElement(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 1097 "./asn1/p1/p1.cnf"
+#line 1096 "./asn1/p1/p1.cnf"
set_do_address(actx, TRUE);
@@ -3246,8 +3246,9 @@ dissect_p1_Content(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
tvbuff_t *next_tvb;
p1_address_ctx_t* ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
- /* we can do this now constructed octet strings are supported */
- offset = dissect_ber_octet_string(FALSE, actx, tree, tvb, offset, hf_index, &next_tvb);
+ offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+ &next_tvb);
+
if (next_tvb) {
proto_item_set_text(actx->created_item, "content (%u bytes)", tvb_reported_length (next_tvb));
@@ -3656,7 +3657,7 @@ static const ber_choice_t ReportType_choice[] = {
static int
dissect_p1_ReportType(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 1232 "./asn1/p1/p1.cnf"
+#line 1231 "./asn1/p1/p1.cnf"
gint report = -1;
offset = dissect_ber_choice(actx, tree, tvb, offset,
@@ -3796,7 +3797,7 @@ static const ber_choice_t MTS_APDU_choice[] = {
static int
dissect_p1_MTS_APDU(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 1218 "./asn1/p1/p1.cnf"
+#line 1217 "./asn1/p1/p1.cnf"
gint apdu = -1;
offset = dissect_ber_choice(actx, tree, tvb, offset,
@@ -3853,7 +3854,7 @@ static const ber_sequence_t MTASuppliedInformation_set[] = {
static int
dissect_p1_MTASuppliedInformation(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 1122 "./asn1/p1/p1.cnf"
+#line 1121 "./asn1/p1/p1.cnf"
set_do_address(actx, FALSE);
@@ -3879,7 +3880,7 @@ static const ber_sequence_t InternalTraceInformationElement_sequence[] = {
static int
dissect_p1_InternalTraceInformationElement(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 1105 "./asn1/p1/p1.cnf"
+#line 1104 "./asn1/p1/p1.cnf"
set_do_address(actx, TRUE);
@@ -4013,7 +4014,7 @@ static const ber_sequence_t MTSBindResult_set[] = {
static int
dissect_p1_MTSBindResult(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 1256 "./asn1/p1/p1.cnf"
+#line 1255 "./asn1/p1/p1.cnf"
/* TODO: there may be other entry points where this global should be initialized... */
actx->subtree.tree = NULL;
@@ -4146,7 +4147,7 @@ static const ber_sequence_t MessageSubmissionArgument_sequence[] = {
static int
dissect_p1_MessageSubmissionArgument(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 1241 "./asn1/p1/p1.cnf"
+#line 1240 "./asn1/p1/p1.cnf"
p1_initialize_content_globals(actx, tree, TRUE);
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
MessageSubmissionArgument_sequence, hf_index, ett_p1_MessageSubmissionArgument);
@@ -4720,7 +4721,7 @@ static const ber_sequence_t MessageDeliveryArgument_sequence[] = {
static int
dissect_p1_MessageDeliveryArgument(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 1246 "./asn1/p1/p1.cnf"
+#line 1245 "./asn1/p1/p1.cnf"
p1_initialize_content_globals(actx, tree, TRUE);
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
MessageDeliveryArgument_sequence, hf_index, ett_p1_MessageDeliveryArgument);
@@ -4830,7 +4831,7 @@ static const ber_sequence_t ReportDeliveryArgument_set[] = {
static int
dissect_p1_ReportDeliveryArgument(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 1251 "./asn1/p1/p1.cnf"
+#line 1250 "./asn1/p1/p1.cnf"
p1_initialize_content_globals(actx, tree, TRUE);
offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
ReportDeliveryArgument_set, hf_index, ett_p1_ReportDeliveryArgument);
@@ -5043,7 +5044,7 @@ dissect_p1_UserName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_
static int
dissect_p1_T_x121_address(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 846 "./asn1/p1/p1.cnf"
+#line 845 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@@ -5748,7 +5749,7 @@ static const ber_sequence_t ORAddress_sequence[] = {
int
dissect_p1_ORAddress(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 990 "./asn1/p1/p1.cnf"
+#line 989 "./asn1/p1/p1.cnf"
p1_address_ctx_t* ctx;
if (actx->subtree.tree_ctx == NULL) {
@@ -6191,7 +6192,7 @@ dissect_p1_CertificateSelectors(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_p1_CommonName(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 794 "./asn1/p1/p1.cnf"
+#line 793 "./asn1/p1/p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -6210,7 +6211,7 @@ dissect_p1_CommonName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
static int
dissect_p1_TeletexCommonName(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 804 "./asn1/p1/p1.cnf"
+#line 803 "./asn1/p1/p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@@ -6308,7 +6309,7 @@ dissect_p1_UniversalCommonName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_TeletexOrganizationName(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 764 "./asn1/p1/p1.cnf"
+#line 763 "./asn1/p1/p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@@ -6336,7 +6337,7 @@ dissect_p1_UniversalOrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb _U
static int
dissect_p1_T_teletex_surname(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 943 "./asn1/p1/p1.cnf"
+#line 942 "./asn1/p1/p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@@ -6355,7 +6356,7 @@ dissect_p1_T_teletex_surname(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_p1_T_teletex_given_name(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 950 "./asn1/p1/p1.cnf"
+#line 949 "./asn1/p1/p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@@ -6374,7 +6375,7 @@ dissect_p1_T_teletex_given_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_p1_T_teletex_initials(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 957 "./asn1/p1/p1.cnf"
+#line 956 "./asn1/p1/p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@@ -6393,7 +6394,7 @@ dissect_p1_T_teletex_initials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_T_teletex_generation_qualifier(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 964 "./asn1/p1/p1.cnf"
+#line 963 "./asn1/p1/p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@@ -6446,7 +6447,7 @@ dissect_p1_UniversalPersonalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
static int
dissect_p1_TeletexOrganizationalUnitName(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 784 "./asn1/p1/p1.cnf"
+#line 783 "./asn1/p1/p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@@ -6511,7 +6512,7 @@ dissect_p1_PDSName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_p1_T_x121_dcc_code_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 881 "./asn1/p1/p1.cnf"
+#line 880 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@@ -6530,7 +6531,7 @@ dissect_p1_T_x121_dcc_code_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_T_iso_3166_alpha2_code_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 839 "./asn1/p1/p1.cnf"
+#line 838 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@@ -6571,7 +6572,7 @@ dissect_p1_PhysicalDeliveryCountryName(gboolean implicit_tag _U_, tvbuff_t *tvb
static int
dissect_p1_T_numeric_code(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 888 "./asn1/p1/p1.cnf"
+#line 887 "./asn1/p1/p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@@ -6995,7 +6996,7 @@ dissect_p1_TerminalType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_p1_T_type(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 896 "./asn1/p1/p1.cnf"
+#line 895 "./asn1/p1/p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@@ -7014,7 +7015,7 @@ dissect_p1_T_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_p1_T_teletex_value(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 903 "./asn1/p1/p1.cnf"
+#line 902 "./asn1/p1/p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@@ -7038,7 +7039,7 @@ static const ber_sequence_t TeletexDomainDefinedAttribute_sequence[] = {
static int
dissect_p1_TeletexDomainDefinedAttribute(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 910 "./asn1/p1/p1.cnf"
+#line 909 "./asn1/p1/p1.cnf"
actx->value_ptr = wmem_strbuf_new(wmem_packet_scope(), "");
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -7101,7 +7102,7 @@ static const ber_sequence_t MTANameAndOptionalGDI_sequence[] = {
static int
dissect_p1_MTANameAndOptionalGDI(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 1083 "./asn1/p1/p1.cnf"
+#line 1082 "./asn1/p1/p1.cnf"
set_do_address(actx, TRUE);
@@ -7161,7 +7162,7 @@ dissect_p1_TokenDataType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
static int
dissect_p1_T_value(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 1185 "./asn1/p1/p1.cnf"
+#line 1184 "./asn1/p1/p1.cnf"
proto_item_append_text(tree, " (%s)", val_to_str(actx->external.indirect_reference, p1_TokenDataType_vals, "tokendata-type %d"));
if (dissector_try_uint(p1_tokendata_dissector_table, actx->external.indirect_reference, tvb, actx->pinfo, tree)) {