From 8ba3b32de9548ddfc4194d2e7825d6c78bcb37ec Mon Sep 17 00:00:00 2001 From: Kenneth Lundin Date: Fri, 4 Mar 2011 12:38:24 +0100 Subject: Fixed crash in asn1ct_check occuring for SEQUENCE with extension mark and component relation attribute. --- lib/asn1/src/asn1ct_check.erl | 8 ++++--- lib/asn1/test/asn1_SUITE.erl.src | 1 + lib/asn1/test/asn1_SUITE_data/CAP.asn1 | 41 ++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 lib/asn1/test/asn1_SUITE_data/CAP.asn1 diff --git a/lib/asn1/src/asn1ct_check.erl b/lib/asn1/src/asn1ct_check.erl index 8b1ee6e601..efd731f052 100644 --- a/lib/asn1/src/asn1ct_check.erl +++ b/lib/asn1/src/asn1ct_check.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2010. All Rights Reserved. +%% Copyright Ericsson AB 1997-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -6176,7 +6176,6 @@ componentrelation_leadingattr(_,[],_CompList,[],NewCompList) -> {false,lists:reverse(NewCompList)}; componentrelation_leadingattr(_,[],_CompList,LeadingAttr,NewCompList) -> {lists:last(LeadingAttr),lists:reverse(NewCompList)}; %send all info in Ts later - componentrelation_leadingattr(S,[C= #'ComponentType'{}|Cs],CompList,Acc,CompAcc) -> {LAAcc,NewC} = case catch componentrelation1(S,C#'ComponentType'.typespec, @@ -6229,7 +6228,10 @@ componentrelation_leadingattr(S,[C= #'ComponentType'{}|Cs],CompList,Acc,CompAcc) {[],C} end, componentrelation_leadingattr(S,Cs,CompList,LAAcc++Acc, - [NewC|CompAcc]). + [NewC|CompAcc]); +componentrelation_leadingattr(S,[NotComponentType|Cs],CompList,LeadingAttr,NewCompList) -> + componentrelation_leadingattr(S,Cs,CompList,LeadingAttr,[NotComponentType|NewCompList]). + object_set_mod_name(_S,ObjSet) when is_atom(ObjSet) -> ObjSet; diff --git a/lib/asn1/test/asn1_SUITE.erl.src b/lib/asn1/test/asn1_SUITE.erl.src index e1a09adc82..fd0bae34c8 100644 --- a/lib/asn1/test/asn1_SUITE.erl.src +++ b/lib/asn1/test/asn1_SUITE.erl.src @@ -2327,6 +2327,7 @@ ber_modules() -> test_modules() -> _Modules = [ "BitStr", + "CAP", "CommonDataTypes", "Constraints", "ContextSwitchingTypes", diff --git a/lib/asn1/test/asn1_SUITE_data/CAP.asn1 b/lib/asn1/test/asn1_SUITE_data/CAP.asn1 new file mode 100644 index 0000000000..69d8486d3b --- /dev/null +++ b/lib/asn1/test/asn1_SUITE_data/CAP.asn1 @@ -0,0 +1,41 @@ +CAP {ccitt(0) identified-organization(4) etsi(0) mobileDomain(0) umts-network(1) modules(3) cap-datatypes(52) version3(2)} + +DEFINITIONS IMPLICIT TAGS ::= + +BEGIN + +EXTENSION ::= CLASS { + &ExtensionType, + &criticality CriticalityType DEFAULT ignore, + &id Code + } +WITH SYNTAX { + EXTENSION-SYNTAX &ExtensionType + CRITICALITY &criticality + IDENTIFIED BY &id + } + +ExtensionField ::= SEQUENCE { + type EXTENSION.&id ({SupportedExtensions }), + criticality CriticalityType DEFAULT ignore, + value [1] EXTENSION.&ExtensionType ({SupportedExtensions }{@type}), + ...} + +SupportedExtensions EXTENSION ::= {firstExtension, ...} + +firstExtension EXTENSION ::= { + EXTENSION-SYNTAX NULL + CRITICALITY ignore + IDENTIFIED BY global : {itu-t(0) identified-organization(4) organisation(0) gsm(1) + capextension(2)}} + +CriticalityType ::= ENUMERATED { + ignore (0), + abort (1) + } + +Code ::= CHOICE {local INTEGER, + global OBJECT IDENTIFIER} + + +END -- cgit v1.2.3