aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-01-04 18:47:40 +0100
committerPascal Quantin <pascal.quantin@gmail.com>2015-01-04 20:14:11 +0000
commit9aeb24994364c9a3a983b4aa8db4725b1213d64d (patch)
treea66913c1ff1e76ee0980a9dcf2e01e3faba32b56 /asn1
parentd9b480dd5809b76f5ed6a06eda9f9663087af6aa (diff)
ACSE: get rid of an evil global variable
Bug: 10787 Change-Id: I225dab439e195bbd308bcafd4658e77ef9023c0f Reviewed-on: https://code.wireshark.org/review/6263 Tested-by: Pascal Quantin <pascal.quantin@gmail.com> Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Reviewed-by: Evan Huus <eapache@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'asn1')
-rw-r--r--asn1/acse/acse.cnf39
-rw-r--r--asn1/acse/packet-acse-template.c3
2 files changed, 30 insertions, 12 deletions
diff --git a/asn1/acse/acse.cnf b/asn1/acse/acse.cnf
index e1e9ebbe18..6fa8bbc052 100644
--- a/asn1/acse/acse.cnf
+++ b/asn1/acse/acse.cnf
@@ -44,29 +44,39 @@ ACRQ-apdu/_untag/aSO-context-name aCRQ_aSO_context_name
PDV-list/presentation-data-values/octet-aligned pDVList_octet_aligned
#.FN_PARS Authentication-value-other/other-mechanism-name
- FN_VARIANT = _str VAL_PTR = &object_identifier_id
+ FN_VARIANT = _str VAL_PTR = &actx->external.direct_reference
+
+#.FN_BODY Authentication-value-other/other-mechanism-name
+%(DEFAULT_BODY)s
+ actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE;
#.FN_BODY Authentication-value-other/other-mechanism-value
- offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree, actx->private_data);
+ if (actx->external.direct_ref_present) {
+ offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, top_tree, actx->private_data);
+ }
#.FN_BODY PDV-list/presentation-data-values/simple-ASN1-type
/*XXX not implemented yet */
#.FN_BODY AARQ-apdu/_untag/aSO-context-name
offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
- hf_index, &object_identifier_id);
+ hf_index, &actx->external.direct_reference);
+ actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE;
#.FN_BODY AARE-apdu/_untag/aSO-context-name
offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
- hf_index, &object_identifier_id);
+ hf_index, &actx->external.direct_reference);
+ actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE;
#.FN_BODY ACRQ-apdu/_untag/aSO-context-name
offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
- hf_index, &object_identifier_id);
+ hf_index, &actx->external.direct_reference);
+ actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE;
#.FN_BODY ACRP-apdu/_untag/aSO-context-name
offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
- hf_index, &object_identifier_id);
+ hf_index, &actx->external.direct_reference);
+ actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE;
#.FN_BODY EXTERNALt/_untag/indirect-reference
char *oid;
@@ -78,20 +88,29 @@ PDV-list/presentation-data-values/octet-aligned pDVList_octet_aligned
/* look up the indirect reference */
if((oid = find_oid_by_pres_ctx_id(actx->pinfo, indir_ref)) != NULL) {
- object_identifier_id = wmem_strdup(wmem_packet_scope(), oid);
+ actx->external.direct_reference = wmem_strdup(wmem_packet_scope(), oid);
+ actx->external.direct_ref_present = TRUE;
}
if(session)
session->pres_ctx_id = indir_ref;
#.FN_PARS EXTERNALt/_untag/direct-reference
- FN_VARIANT = _str VAL_PTR = &object_identifier_id
+ FN_VARIANT = _str VAL_PTR = &actx->external.direct_reference
+
+#.FN_BODY EXTERNALt/_untag/direct-reference
+%(DEFAULT_BODY)s
+ actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE;
#.FN_BODY EXTERNALt/_untag/encoding/single-ASN1-type
- offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree ? top_tree : tree, actx->private_data);
+ if (actx->external.direct_ref_present) {
+ offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, top_tree ? top_tree : tree, actx->private_data);
+ }
#.FN_BODY EXTERNALt/_untag/encoding/octet-aligned
- offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree ? top_tree : tree, actx->private_data);
+ if (actx->external.direct_ref_present) {
+ offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, top_tree ? top_tree : tree, actx->private_data);
+ }
#.FN_BODY AARQ-apdu
col_append_str(actx->pinfo->cinfo, COL_INFO, "A-Associate-Request");
diff --git a/asn1/acse/packet-acse-template.c b/asn1/acse/packet-acse-template.c
index 47c3cb4f62..95e83a3792 100644
--- a/asn1/acse/packet-acse-template.c
+++ b/asn1/acse/packet-acse-template.c
@@ -75,7 +75,6 @@ static expert_field ei_acse_dissector_not_available = EI_INIT;
static expert_field ei_acse_malformed = EI_INIT;
static expert_field ei_acse_invalid_oid = EI_INIT;
-static const char *object_identifier_id;
/* indirect_reference, used to pick up the signalling so we know what
kind of data is transferred in SES_DATA_TRANSFER_PDUs */
static guint32 indir_ref=0;
@@ -276,7 +275,7 @@ void proto_register_acse(void) {
static ei_register_info ei[] = {
{ &ei_acse_dissector_not_available, { "acse.dissector_not_available", PI_UNDECODED, PI_WARN, "Dissector is not available", EXPFILL }},
- { &ei_acse_malformed, { "acse._malformed", PI_MALFORMED, PI_ERROR, "Malformed packet", EXPFILL }},
+ { &ei_acse_malformed, { "acse.malformed", PI_MALFORMED, PI_ERROR, "Malformed packet", EXPFILL }},
{ &ei_acse_invalid_oid, { "acse.invalid_oid", PI_UNDECODED, PI_WARN, "Invalid OID", EXPFILL }},
};