
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.
	* Code compiled and checked on PowerPC (@MacOS X). 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: blocker,
	  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: blocker, Security impact: low).
	* Fixed OCTET STRING::BER decoder: restart after reaching a buffer
	  boundary was broken (Severity: blocker, 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.
