diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2015-01-04 18:47:40 +0100 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2015-01-04 20:14:11 +0000 |
commit | 9aeb24994364c9a3a983b4aa8db4725b1213d64d (patch) | |
tree | a66913c1ff1e76ee0980a9dcf2e01e3faba32b56 /asn1 | |
parent | d9b480dd5809b76f5ed6a06eda9f9663087af6aa (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.cnf | 39 | ||||
-rw-r--r-- | asn1/acse/packet-acse-template.c | 3 |
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 }}, }; |