The last production release version of the ASN1C compiler in the version 5.8x series was 5.85. The following changes were made in this release:
- Fixed encoding of BIT STRING's using DER to adjust bit count to exclude all trailing zero bits. Fix was done for all languages (C, C++, Java, and C#). (PR# ASN-444)
- Fixed bug in C/C++ PER encoding of small, non-negative whole number when value greater than 63 (i.e. extended case). (PR#ASN-472)
- Added support for run-time string validation when strict checking is enabled. (PR#000630)
- Fixed bug in C# code generation when using -depends to ensure that all dependent modules are included. (PR#000626)
- Fixed bug in C/C++ encoding logic in which condition tests on unsigned numbers greater than INT_MAX were being truncated to their signed value. (PR#000625)
- Added a secure delete function for BigInteger types to clear the value before passing to the garbage collector (C# only). (PR#000618)
The following changes were made between version 5.84 and 5.83:
- Fixed min and max constraint code gen for Java and C#.
(PR#000614)
- Added support for strong key name in C#. (PR#000613)
- Fixed a bug in C/C++ PER decode of dynamic bit string with
extensible size constraint when string has length of zero bits.
(PR#000606)
- C/C++ PER code generation. Fix problem in handling extensible
constraint in which value range of root or extension is beyond
range of a 32-bit integer. (PR#000595)
- Fixed bug that prevented removing first element from a list
with only one item. (PR#000585)
- Added support to PER decoding for arrays containing 64K
elements or more. (PR#000567)
- Fixed error in C++ BER parser code generation for open type. (PR#000563)
The following changes were made between version 5.83 and 5.82:
- Replaced use of <ctype.h> with "rtctype.h" (our in-house
version of this file) in run-time C/C++ files. This caused backward
compatibility issues with some Linux distributions. (PR#
000555)
- Fixed an error in syntax error reporting in which information
on the syntax error was not printed out unless a list buffer
existed (this was only the case if -list is added as a command-line
option). (PR #000552)
- Fixed C/C++ XML decoding to avoid adding additional whitespace
to decoded information items. (PR# 000549)
- Fixed XER encoding of carriage return, line feed and tabulation
characters to be consistent for all languages. These characters are
now left unchanged. (PR# 000548)
- Fixed bug in PER C#/Java/XSD code generation for INTEGER values
with very large value ranges (up to 64 bits unsigned, i.e.
0..9223372036854775799). (PR# 000546)
- Added /MDd libraries (debug multi-threaded DLL-ready libraries)
for all Visual Studio versions. (PR# 000542)
- Fixed bug in C/C++ PER unaligned encoding of character string
with permitted alphabet constraint when number of characters in set
falls exactly on a power of 2 boundary (2, 4, 8, 16, 32, etc.).
(PR# 000540)
- Modified reserved word lists for Java and C++. Symbol names are
only changed if they are a reserved word in the given language.
(PR# 000538).
- Modified ASN1C GUI file pulldown menus to include the 'All
Files *.*' option to allow files with any extension to be selected.
(PR# 000537).
- Modified C++ EncodeTo and DecodeFrom base class methods to
return a run-time error if invoked. The error code is
"ASN_E_NOTPDU" which indicates that only a PDU type will have an
implementation of the required method. Before, functions were
returning an OK status but not doing anything which was a cause of
confusion. (PR# 000524).
- Fixed bugs in -depends processing in conjunction with -tables
option in which table-constraint information items were not able to
be successfully pre-resolved. (PR# 000519).
- Fixed a crash in C/C++ code caused by calling ASN1MEMFREE followed by rtFreeContext. Modified ASN1MEMFREE macro so that it sets the dynamic buffer (if used) pointer to 0 to avoid a double free later on when the free context function is called . (PR# 000561)
The following changes were made between version 5.80 and 5.81:
- 64-bit libraries added to all UNIX/Linux evaluation
kits.
- Added logic to add configuration type prefix to generated C/C++
global character set constants. (PR# 000535).
- Fixed crash in PER C++ decoding of extensible CHOICE. Crash
occurred if an extension addition is being decoded and the decoding
of the open type fails. The union construct will be left in an
indeterminant state and the CHOICE destructor will then try to free
the memory held within. (PR# 000534)
- Fixed a crash that occurred on Solaris Sparc with optimized,
gcc compiled run-time. The crash occurred in function xd_uint64
(64-bit unsigned integer decode). (PR# 000533)
- Fixed a problem in C/C++ BER decoding in which an error was not
being reported if mandatory elements were missing from a SEQUENCE
or SET construct. (PR# 000531).
- Fixed a problem in which the extElem1 element which is used for
open extensions was being added to generated structures when the
-noOpenExt compiler option was selected. (PR# 000530)
- Fixed problem in XML encoding for Java for SEQUENCE OF
constructs when the -compact compiler option is selected. The
encoding is being done in XER form where <TypeName> is being
inserted as the element tag instead of <element>. (PR#
000529).
- Fixed problem in which Java XML decode failed when an empty
element (i.e <elem/>) existed within a choice construct. (PR#
000528)
- Added license management logic to the Java library that allows
a user to update the run-time key in the library without needing
the ASN1C compiler to be installed on the node. (PR#
000527)
- Fixed bug in C++ BER deferred decoding code generation bug for
constructed tag in CHOICE type element. (PR# 000526)
- Modified C++ EncodeTo and DecodeFrom base class methods to
return a run-time error if invoked. The error is a new code -
ASN_E_NOTPDU - which indicates that only a PDU type will have an
implementation of the required method. This fixed a condition in
which nothing was being returned from these methods when not used
properly in PDU types. (PR# 000524)
- Fixed problem in C++ parser code generated with -notypes
option. The SEQOF control class constructor still had msgData
initialization code (but msgData was not present in the class in
this case). (PR# 000523).
- Fixed problem in C/C++ generated event handlers in which 64-bit
integers were not handled correctly. (PR# 000523).
- Fixed problem in makefile generation in which the makefile was
not being generated properly if the -notypes option was used. (PR#
000523)
- Fixed crash that occurred when encoding ot decoding an absent
optional element in C++ DER code generation. (PR# 000522 and
000521).
Fixed bug in PKCS-7 code generation with -tables option in which an imported class definition (MATCHING-RULE) was not being found. (PR# 000519) - Fixed two bugs in C++ ASN1TGeneralizedTime run-time
class:
1) if second's fraction is longer than one digit, then the following 'Z' symbol was not proceeded;
2) if the second's fraction should have leading zeros (something like 0.00123) then after reencoding these leading zeros were lost (became 0.123).
(PR# 000515). - Fixed problems with type and value constraints applied to
enumerated types. In some cases generated code did not compile and
in others, PER encodings were not correct. Modified the processing
logic to create new enumerated types from the constrained types
instead of just adding constraint processing logic to the original
type handling code. (PR# 000512)
- Fixed warnings generated by gcc 3.4 compiler. (PR#
000511)
- Fixed problem of -depends option being used in conjunction with
-config. Problem was productions being dropped from config include
list. (PR# 000510).
- Fixed crash in generated C/C++ XER/XML decoders that occurred
when decoding extension sequence type as choice type element. (PR#
000509)
- Fixed BIT STRING value parsing problem for Java, C# event
handler code. Added configuration option for Java and C# BIT STRING
to print in Hex, Bits or Asn1Value format. (PR# 000508).
- Fixed bug in decoding named bit strings with C++ XML encoding
rules. (PR# 000505).
- Added UTF8String default value code generation for C++, Java,
C#. (PR# 000504).
- Fixed BIT STRING type default value code generation problem for C++, Java, C#. (PR# 000503).
The following changes were made between version 5.80 and 5.81:
- Added support for MS Visual Studio 2005 C, C++, and C#
languages for all encoding rules.
- Modified GUI wizard to not disable event handler selection
button when C is selected as language (PR# 000501).
- Fixed bug in UTF8String constraint code generation in which
combination of size constraint with permitted alphabet constraint
was causing an "invalid constraint specification" error to be
generated at compile time. (PR# 000494)
- Fixed bug in which -genMake used in conjunction with the -xsd
option caused incorrect makefile to be generated. The common .c
file was repeated twice in the list of ASN1C files to be generated.
(PR# 000488)
- Added -nodatestamp option to avoid generation of date stamp in
generated files (for source control systems). (PR#
000487)
- Fixed a number of C compiler warnings on VMS platform:
INTCONCASTSGN, INTCONCASTTRU, QUESTCOMPARE, UNREACHCODE. Also fixed
the warning of LINT on BS_READBYTE macro. (PR# 000486).
- Added 'small' to C/C++ reserved word list. Is used in MS VC++
compiler and was causing problems in compiling RRC specs. (PR#
000484)
- Added prototype for rtMemSetDefBlkSize function to rtMemory.h.
Also include Doxygen comment on what it does. This is useful for
tuning performance when decoding large BER-encoded files. (PR#
000482).
- Added 64-bit libraries for Linux X86 platform. (PR#
000481).
- Fixed a bug in which the generated C++ EncodeTo and DecodeFrom
methods were incorrect when the options "-c++ -ber -xer -stream"
were used. (PR# 000477)
- Fixed problem with poor performance in Java BER open type
decoding. Open type decoding uses Asn1DecodeBuffer.capture which
proceeded on octet-by-octet basis. This method was modified to work
with chunks instead of single octets. Also, performance of EXTERNAL
type decoding was improved. (PR# 000473)
- Added public setKey method to the C++ ASN1Stream and
ASN1MessageBuffer classes to allow run-time key to be set manually
when classes are used without compiler generated code. (PR#
000456)
- Modified build of Java unlimited PER and XER run-time jar files
to not contain any BER code which is used for licensing checking in
limited versions. (PR# 000455).
- Modified logic to encode open type to check for numocts == 0
(i.e. empty field). If this is true, an error is reported as the
open field cannot be null. If nothing is there, it will cause error
when item is decoded. (PR# 000449)

