
0.9.23:	2010-Mar-10

	* GeneralizedTime fix for working with time offsets which are not
	  representable in whole hours. (Severity: low; Security impact: low)
	  Thanks to IP Fabrics, Inc.

0.9.22:	2008-Nov-19

	* Added -pdu=all and -pdu=<type> switches to asn1c.
	* Added PER support for most known-multiplier string types:
	  IA5String, VisibleString, PrintableString, BMPString, UniversalString;
	  useful types: GeneralizedTime, UTCTime, ObjectDescriptor;
	  as well as REAL and OBJECT IDENTIFIER.
	  TODO: SET type.
	* Added PER support for extensions in SEQUENCE.
	* Multiple enhancements by Daniele Varrazzo <daniele.varrazzo@gmail.com>
	* Fixed explicit tagging of an in-lined constructed type.
	  (Severity: low; Security impact: none).
	* Memory leak fixed in SET OF / SEQUENCE OF when wrong encoding
	  is encountered. (Severity: medium; Security impact: low)
	* Fixed extensibility handling of second SEQUENCE production.
	  (Severity: low; Security impact: none)
	* Added DEFAULT handling for known multiplier string.
	* Added a sample OMA ULP decoder (./examples/sample.source.ULP).
	* Added full-width 32-bit integer encoding support in PER.
	* Fixed 1-byte OOB write issue with non-standard and Windows
	  memory allocators (Severity: low; Security impact: medium).
	  Reported by Sheng Yu.

0.9.21:	2006-Sep-17

	* skeletons/standard-modules directory is now used for standard types.
	* Fixed class field access problem (Test case 98)
	  (Severity: medium; Security impact: none)
	* Refactored Information Object Classes parsing.
	* Refactored Parameterization support.
	* [typedef enum foo {}] foo_e; is now e_foo, see #1287989
	* Refactored ValueSetTypeAssignment parsing.
	* asn-decoder-template.c renamed into converter-sample.c
	* MEGACO (Media Gateway Control Protocol) decoder sample added.
	* First release of PER encoder (does not encode SETs yet).
	* Added a sample LDAP decoder (./examples/sample.source.LDAP3).
	* Added a sample 3GPP RRC decoder (./examples/sample.source.RRC).
	* Added a sample MEGACO (H.248.1) decoder (sample.source.MEGACO).

0.9.20:	2006-Mar-06

	* SET OF CHOICE, SEQUENCE OF CHOICE and a certain named S/O types
	  are represented differently in XER. THIS IS AN INCOMPATIBLE CHANGE.
	  (Test case 70) (Severity: low; Security impact: low)
	* asn1c: Removed -ftypes88 command line option.
	* Started PER implementation. Somewhat experimental!

0.9.19:	2005-Oct-06

	* A proper solution to circular references. No kludge flags
	  should be necessary anymore to produce reference-free code:
	  recursive dependencies are resolved automatically.
	* Test cases 73 & 92 keep track of various circular references.
	* Introduced compiler directives to allow finer control over the
	  generated code ("--<ASN1C...>--" in comments), (Test case 93).
	* New feature for unber(1): -s <skip> bytes.
	* Mandatory elements map for SET was not getting generated properly.
	  (Test case 94) (Severity: high; Security impact: low)
	* asn1c: new command line option: -fskeletons-copy.

0.9.18:	2005-Aug-14

	* The obsolete X.208 syntax is handled gracefully now (compound types'
	  member names are invented on the fly). (Test case 87).
	* Generating enumeration tables for INTEGER types (Test case 88).
	* Generating enumeration tables for BIT STRING types (Test case 89).
	* Conditional INTEGER/ENUMERATED representation: long vs. INTEGER_t
	  type is chosen based on PER visible constraints (Test cases 90, 91).
	* Union structures for CHOICE type are not anonymous anymore.
	* Made unber(1) program more verbose: effective structure length is
	  now displayed as L="<n>" at the closing tag. (Test check-xxber.sh).
	* Fixed unber(1)'s -1 switch for indefinite encoding length.
	* New command line option for unber(1): -m to enable minimalistic mode.

0.9.17:	2005-Aug-07

	* Tagging mode is implicitly IMPLICIT if AUTOMATIC TAGS is used, #30.6.
	  (Test cases 55, 86).
	* Started to use extern "C" {} in skeleton headers.
	* Introduced -finline-choice command line option to fix
	  yet another class of circular references.

0.9.16:	2005-July-04

	* GeneralizedTime API now supports fractions of seconds.
	  Thanks to Bent Nicolaisen <BN@JAI.com> for support.
	* ASN.1 parser has been tweaked to allow parsing something like
	  "SEQUENCE----comment----", which is ambiguous for many reasons.
	* XER decoder better handles not-yet-defined future extensions.

0.9.15: 2005-July-02

	* Compiler now checks 64-bit overflows in constraints range handling
	  code. No effect on the code produced by the compiler.
	* Compiler support for tagged and marked parametrized members.
	* Empty tags to element map avoided.
	* Compiled code GCC 4.x compatibility.

0.9.14:	2005-Apr-29

	* Fixed check-70.-fnative-integers.c test (it was failing
	  when no test directory was found).

0.9.13:	2005-Apr-24

	* Added extra const qualifiers into the support code.
	* More RFC variations supported in crfc2asn1.pl.
	* Refined string values compatibility. (Test cases 77, 78).
	* Support for ContainedSubtype constraints. (Test case 16).
	* Parsing support for CONSTRAINED BY. (Test case 79).
	* Support for CharsDefn (Quadruple and Tuple, most used in
	  ASN1-CHARACTER-MODULE) (Test case 80).
	* Pretty-printing support for WITH COMPONENT[S]. (Test case 82).
	* Streamed OCTET STRING decoding of large values: fixed allocation
	  problem introduced in 0.9.9. (Severity: high; Security impact: medium)
	  Reported by Yann Grossel <olrick@users.sourceforge.net>.
	* Fixed BASIC-XER encoding of REAL numbers.

0.9.12:	2005-Mar-10

	* Fixed a name clash in produced constraint checking code.
	* #includes are now in single quotes (to solve a name
	  clash with system's <time.h> on a Win32 system). 
	* Small refinement of XML DTD generation (`asn1c -X`).
	* Relaxed XER processing rules to skip extra whitespace
	  in some more places. It also skips XML comments (although
	  XML comments in XER are prohibited by X.693, #8.2.1).
	  (Test case 70) (Severity: medium; Security impact: none)
	  Reported by <Dominique.Nerriec@alcatel.fr>.
	* Constraints on primitive types being defined are now supported.
	  (Test case 74) (Severity: low; Security impact: none)
	* XMLValueList generation fixed for CHOICE type.
	  (Severity: medium; Security impact: none)
	* Added the GSM TAP3 decoder into ./examples/sample.source.TAP3

0.9.11:	2005-Mar-04

	* Released -fcompound-names to fix the name clashes in the code
	  produced by the asn1c.
	* Released -fno-include-deps to avoid #including non-critical
	  external dependencies.
	* Compiler is taught to produce compilable code for yet another class
	  of circular ASN.1 type references.
	* X.693:8.3.4 prohibits anything but SignedNumber; fixed XER codec.
	* Fixed ENUMERATED identifier to value conversion in XER.
	  Reported by <jacque.celaire@caramail.com>.
	* If the compiled file contents are the same as in already existing
	  file (left from previous compilation), the old file is retained.
	  This prevents thrashing `make` dependencies if amount of changes in
	  the original ASN.1 module(s) is small.

0.9.10:	2005-Feb-25

	* Completed the XER XMLValueList encoding and decoding.
	* Native integer type is now using "long".
	* Fixed #1150856. Reported by <vvvy@users.sourceforge.net>.
	* Some WIN32 portability fixes.

0.9.9:	2005-Feb-22

	* First release of XER (XML) decoding implementation (somewhat
	  experimental).
	* ANY allocation routine fixed.
	  Reported by <mikko.ahonen@elma.net>.
	* Fixed tag parsing (tags like "[ 0 ]" were not supported).
	* Compiler now checks for duplicate ASN.1 types across modules.

0.9.8:	2005-Jan-17

	* [NEW PLATFORM] Compiled and tested on Linux @ alpha64 (LP64).
	  Some code needed to be fixed regarding int-long conversions
	  (mostly inside the test suite), and floating point handling
	  code needed to be restructured to handle signalling NAN and
	  other floating point exceptions quietly. Smooth transition!
	* [NEW PLATFORM] Compiled and tested on Sun Solaris 9 @ sparc.
	  Improved includes/defines of/for system headers.
	* -X command line option added to asn1c to generate XML DTD.
	* Empty SEQUENCE and SET clauses are now allowed.
	* Removed confusion between &xNN; and &#xNN; in enber and unber.
	* Removed order dependency in DEFAULT references to ENUMERATED
	  identifiers (./tests/68-*-OK.asn1).
	* ber_dec_rval_t renamed into asn_dec_rval_t: more generality.
	* Extensions in CHOICE types are properly marked as non-pointers
	  (Test case 59) (Severity: medium; Security impact: medium)
	  Reported by <roman.pfender@sdm.de>.
	* Tagged CHOICE type is now supported again.
	  (Test case 59) (Severity: low; Security impact: low)
	  Reported by <orlinkata@dir.bg>.
	* Implemented der_encode_to_buffer() procedure.

0.9.7.1:	2004-Oct-12

	* Fixed automatic tagging for extensions of compound types.
	* Fixed ParametrizedReference parsing: {} are now recognized.

0.9.7:	2004-Oct-11

	* Finished CXER implementation by adding SET and SET OF canonical
	  ordering support.
	* Fixed unber(1) limits controlling logic.
	* Removed C99'izm from the x509dump, now understood by older compilers.
	* Enhanced UTF8String constraint validation, now it checks
	  for the minimal encoding length; API of UTF8String_length() changed.
	* Fixed SEQUENCE dealing with premature termination of the
	  optionals-laden indefinite length structure. The code was previously
	  refusing to parse such structures.
	* Fixed explicitly tagged ANY type encoding and decoding
	  (Severity: medium; Security impact: low).
	* Fixed CHOICE code spin when indefinite length structures appear
	  in the extensions (Severity: medium; Security impact: medium).
	  Reported by <siden@ul-gsm.ru>.
	* BIT STRING now stores the number of unused octets in a separate field.

0.9.6:	2004-Sep-29

	* Added several security firewalls: decoder's stack usage control
	  and the stricter checking of the TLV length.
	* Implemented BASIC-XER encoding support (X.693).
	* Implemented unber(1) and enber(1) for BER<->XML translation.
	* Implemented CGI for online ASN.1 compilation (asn1c/webcgi).
	* Implemented the sample X.509 decoder (./examples/sample.source.PKIX1).
	* NamedType is now supported for SET OF/SEQUENCE OF type.
	* Added -fno-constraints option to asn1c, which disabled generation of
	  ASN.1 subtype constraints checking code.
	* Added ASN1C_ENVIRONMENT_VERSION and get_asn1c_environment_version().
	* Fixed ANY type decoding (Severity: high; Security impact: low).
	* Fixed BER decoder restartability problem with certain primitive
	  types (BOOLEAN, INTEGER, and REAL). The problem occured when the
	  encoding of such type is split between several bytes.
	  (Severity: high; Security impact: low)
	* Support for cross-referencing type definitions (updated ./tests/43-*).
	* Fixed pretty-printing of the REAL type. Added lots of test cases.
	* Renamed asn1_* into asn_* in function and type names.
	* Updated documentation.

0.9.5:	2004-Sep-17

	* Fixed CER (common BER) decoder code. See check-25.c/VisibleString
	  case for details. X.690 specifies that inner structures in BER
	  encoding must be tagged by stripping off the outer tag for each
	  subsequent containment level. See also X.690: 8.21.5.4 and
	  the "Spouse" case in A.3.
	  (Severity: medium; Security impact: low)
	* Added converters between any generic type and the ANY type.
	* Parser fixed: Information Object Class fields may be taged.
	* Parser fixed: tagged types inside SEQUENCE OF/SET OF support.
	* Improved DEFAULT Value parsing and pretty-printing.
	* Condition on distinct tags checker was incorrectly dealing with
	  tagged CHOICE types. Fixed. Modified tests/37-indirect-choice-OK.asn1
	* Improved type name generation code ("struct foo" vs "foo_t").
	* Fixed constraint checking code incorrectly dealing with imported
	  types with constraint values defined in other modules.
	* Real REAL support! (Haven't tested denormals support yet!)
	  See skeletons/tests/check-REAL.c

0.9.4:	2004-Sep-10

	* More support for recursive type definitions.
	* Explicit support for ANY type decoding.
	* Refactored tags processing code.
	* Fixed constraints checking code: non-exploitable buffer overflow.
	  (Severity: medium; Security impact: low)

0.9.3:	2004-Sep-07

	* Extended constraints support in parametrized types.
	* Better support for parametrization and constraints handling.
	* Better handling of recursive type definitions.
	* Added support for ANY type.

0.9.2:	2004-Aug-24

	* More flexible subtype constraints handling, with relaxed
	  PER visibility rules for actual constraints checking code generator.
	* Indirect references in constraints resolver code fixed.
	* Avoided compilation warning on gcc 3.3.3 systems.
	* Better ValueSet printing.

0.9.1:	2004-Aug-23

	* Documentation updated: doc/asn1c-usage.pdf
	* Fixed OBJECT IDENTIFIER human-readable printing.
	  Reported by <siden@ul-gsm.ru>.

0.9:	2004-Aug-23

	* Reworked subtype constraints handling, aiming at PER-applicability.
	* BOOLEAN and NULL are now implemented in terms of native int type.
	* Compiler now links in only necessary skeleton files.
	* -t option added to asn1c to ease manual BER/CER/DER decoding.
	* Added support COMPONENTS OF construct.
	* Numerous parser fixes and enhancements.
	* Better constraint failure reporting.

0.8.19:	2004-Aug-18

	* Fixed BER encoder (problem encoding large tag values)
	  (Severity: medium; Security impact: low)

0.8.18:	2004-Aug-12

	* Parser: fixed multiple IMPORTS problem (incorrect assertion).
	* Parser: constraints extensibility parsing fix.

0.8.17:	2004-Aug-11

	* Improved compiler output: duplicate #includes eliminated.
	* Win32 portability fixes.
	* More compatibility with C++ or non-GCC compilers.

0.8.16:	2004-Jul-22

	* Fixed application-level problem in SET OF/SEQUENCE OF array cleanup.
	  (Severity: medium; Security impact: low)
	* Improved asn_GT2time() and added asn_time2{GT,UT}() functions.
	* BIT STRING pretty-printing.

0.8.15:	2004-Jul-20

	* Fixed parser: memory leak in free_struct code for SET OF/SEQUENCE OF.
	  (Severity: high; Security impact: medium)
	* Fixed parser: invalid memory reference in code constructing tags.
	  (Test case 48) (Severity: high; Security impact: medium)
	  When encoding data for certain ASN.1 specifications containing
	  explicit tags, the tag is always written incorrectly due to
	  incorrect memory reference. The encoding will almost always produce
	  unparseable data and might well reference unmapped region so program
	  would produce segmentation violation. Fortunately, memory is
	  read, not written, so remote exploits cannot execute arbitrary
	  code and triggering unmapped memory reference is highly unlikely
	  even it attacker knows the code (basically, the compiler should place
	  asn1_DEF_... right before the end of the mapped memory region, which
	  is extremely rare).
	* Improved INTEGER type printing.

0.8.14:	2004-Jun-30

	* Fixed compiler: extensibility of CHOICE and SET type has not been
	  taken into account during table construction.
	  (Test case 47) (Severity: high; Security impact: low)

0.8.13:	2004-Jun-29

	* Fixed compiler: the skip values for IMPLICIT tagging were broken
	  in some complex cases where one type is defined using another.
	  (Test case 46) (Severity: medium; Security impact: low).
	* Added -fknown-extern-type command line parameter to asn1c.
	* Removed -N command line flag and underlying functionality
	  to honor KISS principle.

0.8.12:	2004-Jun-17

	* RELATIVE-OID and OBJECT IDENTIFIER encoders/decoders are not bound
	  anymore to an integer type of specific size (unsigned long). The
	  size of an integer must be provided explicitly.
	  See {OBJECT_IDENTIFIER|RELATIVE_OID}_{get|set}_arcs().
	* SEQUENCE BER decoder fixed again for complex CHOICE case
	  (Test case 44) (Severity: medium; Security impact: low).

0.8.11:	2004-Jun-05

	* Enforced stricter conformance with C standards.
	* SEQUENCE BER decoder is now equipped with the sorted map
	  in case of complex CHOICE descendants. Test case 44 created.

0.8.10:	2004-Jun-02

	* Added const qualifier where necessary.
	* Changed position of outmost_tag fetcher within asn1_TYPE_descriptor_t
	  structure.

0.8.9:	2004-May-26

	* Added *_{get|set}_arcs_*() functions for OBJECT IDENTIFIER
	  and RELATIVE-OID, together with test cases.

0.8.8:	2004-May-09

	* Introduced subtype constraints support (incomplete!).
	* Fixed compiler. If the last member of the SEQUENCE is OPTIONAL
	  and absent in the encoding, and the type is extensible (...) or
	  EXTENSIBILITY IMPLIED flag is set, then the structure could not
	  be correctly decoded. (Severity: high; Security impact: low).
	* Compiler: fixed recursive ASN.1 types inclusion (Severity: low,
	  Security impact: none).
	* Parser: IMPORTS/FROM fixes, now allowing multiple sections.
	* NEW PLATFORM: Compiled and tested on MacOS X (@ PowerPC).
	  No major portability issues experienced.

0.8.7:	2004-Apr-11	T-version-0-8-7

	* Fixed SEQUENCE BER decoder: if the last member of the SEQUENCE is
	  OPTIONAL and absent in the encoding, RC_FAIL was returned instead
	  of RC_OK (Severity: high; Security impact: low).
	* Added test case to check the above problem.
	* Added test case to check -fnative-integers mode.

0.8.6:	2004-Apr-03	T-version-0-8-6

	* Fixed compiler output for embedded ASN.1 structures.

0.8.5:	2004-Mar-28	T-version-0-8-5

	* Fixed ber_tlv_length() computation problem (Severity: high,
	  Security impact: none).
	  Reported by <vss@high.net.ru>

0.8.4:	2004-Mar-22

	* Removed RC_ITAG enumeration element from BER decoder.
	  This return code did not have much practical value.

0.8.3:	2004-Mar-14	T-version-0-8-3

	* Fixed SET::BER decoder: restart after reaching a buffer boundary
	  weas broken (Severity: high; Security impact: low).
	* Fixed OCTET STRING::BER decoder: restart after reaching a buffer
	  boundary was broken (Severity: high; Security impact: low).
	  Reported by <vss@high.net.ru>
	* Added test cases to check decoders restartability.
	* Slightly more general INTEGER2long decoder.
	* Allowed nested /* C-type */ comments, as per X.680:2002.

0.8.2:	2004-Mar-01	T-version-0-8-2

	* Fixed SEQUENCE BER decoder: an OPTIONAL element was required, where
	  should not have been (Severity: major; Security impact: low).
	* Fixed print_struct pointer inheritance.
	* Added -fno-c99 and -funnamed-unions

0.8.1:	2004-Feb-22

	* -R switch to asn1c: Omit support code, compile only the tables.
	* Introduced NativeInteger pseudotype.
	* Corrected the informal print_struct()'s output format.

0.8.0:	2004-Feb-03	T-version-0-8-0

	* Some documentation is created (a .pdf and a short manual page).
	* Last touches to the code.

0.7.9:	2004-Feb-01	T-version-0-7-9

	* Human readable printing support.
	* Support for implicit (standard) constraints.

0.7.8:	2004-Jan-31

	* SET now rejects duplicate fields in the data stream.

0.7.7:	2004-Jan-25

	* Added types: GeneralizedTime and UTCTime.

0.7.6:	2004-Jan-24	T-version-0-7-6

	* DER encoding of a SET OF now involves dynamic sorting.

0.7.5:	2004-Jan-24	T-version-0-7-5

	* DER encoding of a SET with untagged CHOICE
	  now involves dynamic sorting.

0.7.0:	2004-Jan-19	T-version-0-7-0

	* A bunch of DER encoders is implemented.

0.6.6:	2004-Jan-11

	* Implemented CHOICE decoder.
	* Implemented destructors support.

0.6.5:	2004-Jan-03

	* Implemented SET decoder.
	* Implemented SET OF and SEQUENCE OF decoders.

0.6.4:	2003-Dec-31

	* Implemented BOOLEAN, NULL, ENUMERATED decoders.
	* Implemented OCTET STRING decoder.
	* Implemented BIT STRING decoder.

0.6:	2003-Dec-30

	* First decoding of a BER-encoded structure!

0.5:	2003-Dec-28

	* Framework and most of the compiler backbone coding done.

0.1:	2003-Nov-28

	* Programming started.

=== Bug importance disclosure terms ===

SEVERITY.
    This term applies to the frequence the particular construct is used
    in the real world. The higher the frequency, the more chances of triggering
    this bug.
	low:	The ASN.1 specifications which could trigger
		this kind of bug are not widespread.
	medium:	The particular ASN.1 construct is used quite often,
		so the chance of triggering an error is considerable.
	high:	This fix is considered urgent, or the particular ASN.1
		construct triggering this bug is in wide use.

SECURITY IMPACT.
    This term applies to the amount of potential damage a bug exploitation
    could cause.
	none:	No malicious exploitation is possible.
	low:	The local exploitation is unlikely; the remote exploitation
		is impossible.
	medium:	The remote exploitation is possible when a particular ASN.1
		construct is being used. If possible, only hard failure, spin
		or memory leak are the possible outcome: no shellcode
		injection could possibly be carried by the attack.
	high:	The remote shellcode injection is possible, or the bug is
		otherwise remotely exploitable for most specifications.

